Redis事務(wù)詳解:原理、實(shí)戰(zhàn)、坑點(diǎn)與實(shí)踐
一、什么是Redis事務(wù)1.1 Redis事務(wù)是一組一次性、順序性、排他性執(zhí)行的Redis命令集合。事務(wù)會將多個命令打包一次性發(fā)送給Redis服務(wù)端執(zhí)行執(zhí)行過程中不會被其他客戶端命令插隊(duì)保證批量命令的執(zhí)行完整性。1.2 核心特性原子性部分支持命令入隊(duì)前報錯全部不執(zhí)行命令入隊(duì)后執(zhí)行報錯成功的命令不會回滾核心區(qū)別于MySQL一致性支持事務(wù)執(zhí)行前后數(shù)據(jù)庫數(shù)據(jù)合法、完整無非法數(shù)據(jù)補(bǔ)充另外一種說法是redis不支持一致性因?yàn)槿绻谑聞?wù)執(zhí)行的過程中有命令執(zhí)行失敗就會引起不一致的情況以MySQL的一致性為標(biāo)準(zhǔn)隔離性支持事務(wù)執(zhí)行過程中其他客戶端無法插入命令串行執(zhí)行補(bǔ)充同樣有另外一種說法是redis不支持隔離性因?yàn)閞edis是單線程來執(zhí)行命令同樣以MySQL隔離性為標(biāo)準(zhǔn)持久性不支持事務(wù)執(zhí)行成功后數(shù)據(jù)是否持久化由Redis持久化策略決定事務(wù)本身不保證持久化1.3 適用場景1多命令批量執(zhí)行避免穿插干擾,2簡單的數(shù)據(jù)一致性控制無需復(fù)雜事務(wù)回滾的場景3高頻輕量批量操作追求執(zhí)行效率減少網(wǎng)絡(luò)IO次數(shù)二、Redis事務(wù)核心命令詳解Redis事務(wù)僅依賴4個核心命令所有事務(wù)操作均圍繞這四個命令完成無額外復(fù)雜配置。命令作用使用時機(jī)MULTI開啟事務(wù)標(biāo)記事務(wù)起始位置所有批量命令執(zhí)行前EXEC提交事務(wù)執(zhí)行隊(duì)列中所有緩存命令所有命令入隊(duì)完成后DISCARD取消事務(wù)清空命令隊(duì)列退出事務(wù)狀態(tài)入隊(duì)階段發(fā)現(xiàn)錯誤、主動放棄事務(wù)WATCH監(jiān)聽Key實(shí)現(xiàn)樂觀鎖Key被修改則事務(wù)失效需要防并發(fā)修改、保證數(shù)據(jù)版本一致2.1 基礎(chǔ)執(zhí)行流程完整事務(wù)執(zhí)行分為三個階段是理解所有原理的基礎(chǔ)開啟事務(wù)MULTI客戶端從普通狀態(tài)切換為事務(wù)狀態(tài)后續(xù)所有命令不立即執(zhí)行全部存入事務(wù)命令隊(duì)列命令入隊(duì)依次執(zhí)行讀寫命令Redis僅校驗(yàn)命令語法不執(zhí)行邏輯合法命令入隊(duì)非法命令直接報錯提交/回滾EXEC執(zhí)行所有隊(duì)列命令DISCARD清空隊(duì)列、終止事務(wù)三、Redis事務(wù)核心原理3.1 事務(wù)底層隊(duì)列機(jī)制Redis服務(wù)端為每個客戶端維護(hù)一個獨(dú)立事務(wù)命令隊(duì)列1執(zhí)行MULTI后客戶端狀態(tài)標(biāo)記為TX事務(wù)模式2TX模式下所有合法命令僅入隊(duì)、不執(zhí)行返回QUEUED3收到EXEC指令后服務(wù)端串行、一次性執(zhí)行隊(duì)列所有命令期間不處理其他客戶端請求4執(zhí)行完畢后清空隊(duì)列客戶端退出事務(wù)模式恢復(fù)普通狀態(tài)3.2 WATCH樂觀鎖原,Redis事務(wù)本身無鎖機(jī)制默認(rèn)無法解決并發(fā)修改問題WATCH命令是Redis事務(wù)實(shí)現(xiàn)并發(fā)控制的唯一方式基于樂觀鎖機(jī)制實(shí)現(xiàn)。3.2.1 執(zhí)行邏輯客戶端通過WATCH key1 key2... 監(jiān)聽指定KeyRedis記錄當(dāng)前Key的版本事務(wù)提交EXEC前校驗(yàn)監(jiān)聽的Key是否被其他客戶端修改若Key未被修改正常執(zhí)行事務(wù)若已被修改事務(wù)直接放棄執(zhí)行返回nil3.2.2 取消監(jiān)聽執(zhí)行UNWATCH可手動取消所有Key監(jiān)聽事務(wù)執(zhí)行/取消后監(jiān)聽會自動失效。3.3 事務(wù)隔離級別Redis事務(wù)僅支持串行化隔離級別事務(wù)執(zhí)行期間所有命令獨(dú)占服務(wù)端其他客戶端命令必須等待當(dāng)前事務(wù)執(zhí)行完畢后才能執(zhí)行完全避免幻讀、臟讀、不可重復(fù)讀問題。缺點(diǎn)大事務(wù)會阻塞主線程導(dǎo)致Redis性能下降因此Redis事務(wù)禁止批量執(zhí)行大量命令。四、Redis事務(wù)兩大核心坑點(diǎn)Redis事務(wù)的所有問題都源于不滿足嚴(yán)格原子性分為兩種報錯場景務(wù)必區(qū)分。4.1 入隊(duì)階段報錯——全部不執(zhí)行事務(wù)開啟后命令語法錯誤、參數(shù)錯誤入隊(duì)失敗EXEC提交時整個事務(wù)全部失效無任何命令執(zhí)行。原因Redis檢測到入隊(duì)階段存在非法命令直接標(biāo)記事務(wù)失效提交時清空隊(duì)列。4.2 執(zhí)行階段報錯——部分執(zhí)行、無法回滾命令語法合法但邏輯執(zhí)行報錯如對字符串執(zhí)行自增、哈希字段操作普通Key命令正常入隊(duì)EXEC執(zhí)行時正確命令正常執(zhí)行錯誤命令報錯無回滾。核心總結(jié)Redis事務(wù)不支持事務(wù)回滾必須自行處理事務(wù)中的邏輯異常這是與MySQL事務(wù)最大的區(qū)別。五、Redis事務(wù) 和 Lua腳本 對比在需要原子性、并發(fā)控制的場景中Lua腳本是Redis事務(wù)的進(jìn)階替代方案二者差異極大。對比維度Redis事務(wù)Lua腳本原子性部分原子性執(zhí)行報錯不回滾完整原子性腳本報錯全部回滾并發(fā)控制依賴WATCH樂觀鎖需重試機(jī)制腳本獨(dú)占執(zhí)行天然杜絕并發(fā)干擾靈活性僅支持簡單命令批量執(zhí)行支持邏輯判斷、循環(huán)、復(fù)雜運(yùn)算性能多次命令入隊(duì)輕微性能損耗單次腳本執(zhí)行網(wǎng)絡(luò)IO最少性能更高適用場景簡單批量操作、低并發(fā)場景高并發(fā)、復(fù)雜邏輯、強(qiáng)原子性場景六、面試高頻總結(jié)Redis事務(wù)是否支持回滾不支持。僅入隊(duì)語法錯誤整體失效執(zhí)行邏輯錯誤會部分執(zhí)行無回滾機(jī)制。Redis事務(wù)的ACID特性支持一致性、隔離性部分支持原子性不支持持久性。WATCH命令原理基于樂觀鎖監(jiān)聽Key版本并發(fā)修改則事務(wù)失效。事務(wù)和Lua腳本區(qū)別Lua具備完整原子性、更高性能、更強(qiáng)靈活性是高并發(fā)場景最優(yōu)解。Redis事務(wù)隔離級別串行化執(zhí)行過程獨(dú)占線程無臟讀、幻讀。七、總結(jié)Redis事務(wù)的核心價值是批量命令串行無干擾執(zhí)行、減少網(wǎng)絡(luò)IO但受限于Redis輕量化設(shè)計不具備關(guān)系型數(shù)據(jù)庫的完整原子性和回滾能力。對于簡單批量操作可直接使用原生事務(wù)WATCH實(shí)現(xiàn)高并發(fā)、強(qiáng)一致性場景優(yōu)先選用Lua腳本。

相關(guān)新聞

AI演講能力訓(xùn)練實(shí)戰(zhàn)手冊(企業(yè)級落地白皮書):覆蓋語音、語義、韻律、可信度四大維度

AI演講能力訓(xùn)練實(shí)戰(zhàn)手冊(企業(yè)級落地白皮書):覆蓋語音、語義、韻律、可信度四大維度

更多請點(diǎn)擊: https://codechina.net 第一章:AI演講能力訓(xùn)練的演進(jìn)邏輯與企業(yè)價值錨點(diǎn) AI演講能力訓(xùn)練已從早期語音合成(TTS)驅(qū)動的單向播報,演進(jìn)為融合語義理解、情感建模、實(shí)時反饋與多模態(tài)協(xié)同的閉環(huán)交互系統(tǒng)。這一…

2026/8/3 11:58:47 閱讀更多
hot-35 搜索插入位置

hot-35 搜索插入位置

解法&#xff1a;二分搜索 注意最后一步細(xì)節(jié)class Solution:def searchInsert(self, nums: List[int], target: int) -> int:nums_len len(nums)left 0right nums_len - 1while left < right:mid (left right) //2if nums[mid] target:return midelif nums[mid] &…

2026/8/3 11:58:47 閱讀更多
數(shù)字人多語種播報,口型真能對上嗎?

數(shù)字人多語種播報,口型真能對上嗎?

做海外內(nèi)容半年&#xff0c;最頭疼的不是寫文案&#xff0c;是錄口播——英語、西語、日語輪著來&#xff0c;真人出鏡一緊張就卡殼&#xff0c;重錄十遍口型還對不上音頻&#xff0c;剪輯師都快辭職了。 直到試了 數(shù)字人口播智能體&#xff0c;才明白什么叫‘上傳即同步’。 上…

2026/8/3 11:48:46 閱讀更多
Python學(xué)習(xí)避坑指南:從零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)的高效路徑規(guī)劃

Python學(xué)習(xí)避坑指南:從零基礎(chǔ)到項(xiàng)目實(shí)戰(zhàn)的高效路徑規(guī)劃

最近在幫幾個剛轉(zhuǎn)行做開發(fā)的朋友梳理學(xué)習(xí)路徑&#xff0c;發(fā)現(xiàn)一個挺有意思的現(xiàn)象&#xff1a;幾乎所有人都會問同一個問題&#xff1a;“我想學(xué)Python&#xff0c;B站上那個600集的‘最全最細(xì)’教程怎么樣&#xff1f;真的能學(xué)完就接單、就業(yè)嗎&#xff1f;” 這個問題背后&a…

2026/8/3 12:58:49 閱讀更多
三分鐘讀懂AI醫(yī)療真實(shí)ROI:某省級腫瘤中心部署18個月,誤診率↓31%,人力成本↓27%,數(shù)據(jù)脫敏全過程披露

三分鐘讀懂AI醫(yī)療真實(shí)ROI:某省級腫瘤中心部署18個月,誤診率↓31%,人力成本↓27%,數(shù)據(jù)脫敏全過程披露

更多請點(diǎn)擊&#xff1a; https://codechina.net 第一章&#xff1a;三分鐘讀懂AI醫(yī)療真實(shí)ROI&#xff1a;某省級腫瘤中心部署18個月&#xff0c;誤診率↓31%&#xff0c;人力成本↓27%&#xff0c;數(shù)據(jù)脫敏全過程披露 在AI醫(yī)療落地實(shí)踐中&#xff0c;ROI&#xff08;投資回報率…

2026/8/3 12:58:49 閱讀更多
Python生成SP3雜化軌道3D模型的技術(shù)實(shí)現(xiàn)

Python生成SP3雜化軌道3D模型的技術(shù)實(shí)現(xiàn)

1. SP3雜化軌道3D模型生成項(xiàng)目概述化學(xué)中的雜化軌道理論是理解分子結(jié)構(gòu)的基礎(chǔ)工具之一&#xff0c;而SP3雜化作為最常見的雜化形式之一&#xff0c;在有機(jī)化學(xué)和材料科學(xué)中有著廣泛應(yīng)用。這個項(xiàng)目使用Python編程語言生成SP3雜化軌道的3D STL模型文件&#xff0c;為化學(xué)教學(xué)和科…

2026/8/3 12:58:49 閱讀更多
3分鐘完成視頻字幕提取:本地OCR工具的完美解決方案

3分鐘完成視頻字幕提?。罕镜豋CR工具的完美解決方案

3分鐘完成視頻字幕提取&#xff1a;本地OCR工具的完美解決方案 【免費(fèi)下載鏈接】video-subtitle-extractor 視頻硬字幕提取&#xff0c;生成srt文件。無需申請第三方API&#xff0c;本地實(shí)現(xiàn)文本識別。基于深度學(xué)習(xí)的視頻字幕提取框架&#xff0c;包含字幕區(qū)域檢測、字幕內(nèi)容提…

2026/8/3 12:58:49 閱讀更多
全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎,我們逆向拆解了它的字段置信度熔斷機(jī)制

更多請點(diǎn)擊&#xff1a; https://kaifayun.com 第一章&#xff1a;全球僅7家廠商通過ISO/IEC 27001認(rèn)證的名片AI引擎概覽 名片AI引擎是企業(yè)級智能文檔處理的核心組件&#xff0c;專注于高精度OCR、語義結(jié)構(gòu)化提取與跨語言實(shí)體對齊。截至2024年第三季度&#xff0c;全球范圍內(nèi)僅…

2026/8/3 0:07:47 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南&#xff1a;AI視頻批量生成與自動化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動批量混剪短視頻,自動把視頻發(fā)布到抖音,快手,小紅書,視頻號上,賺錢從來沒有這么容易過! 支持本地語音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定&#xff01;QQ空間歷史說說完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說說 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過&#xff0c;那些年發(fā)過的QQ空間說說&#xff0c;那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料&#xff08;Applied Materials&#xff09;公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號分配電路板。該型號&#xff08;0100-02186&#xff09;的核心特點(diǎn)如下&#xff1a;專用于Endura等半導(dǎo)體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機(jī)是日本日清&#xff08;Nissei&#xff09;品牌的一款工業(yè)用三相異步電機(jī)&#xff0c;適用于自動化設(shè)備及通用機(jī)械驅(qū)動。該型號&#xff08;FFMN-32L-10-T0 40AX&#xff09;的核心特點(diǎn)如下&#xff1a;三相交流異步電動機(jī)。額定…

2026/8/2 2:52:49 閱讀更多