日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 实用技术——事务

發布時間:2025/3/12 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 实用技术——事务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

redis的事務不像關系型數據庫的事務那樣完整。

“快”是redis的特征,在事務管理的過程中,使用muti命令開啟事務塊,當輸入多條命令后,再使用exec命令執行事務塊中的全部命令。

Redis事務可以保證兩件事:

1、隔離性:事務是一個單獨的隔離操作,這和關系型數據庫的事務原則是一致的,事務中的所有命令都會順序執行,且中途不會被其他事務打斷。

2、原子性:要么全部執行,要么全不執行。

一、查看幫助

MULTI、EXEC、DISCARD、WATCH 是 Redis 事務的相關命令:

MULTI 命令用于開啟一個事務,它總是返回OK,執行后,客戶端可以繼續向服務器發送多條命令,這些命令會被暫時存放到隊列中而不執行。

EXEC 命令負責觸發并執行事務中的所有命令,如果客戶端在使用 MULTI 開啟一個事務之后,因為掉線沒有成功執行 EXEC ,那么事務中的所有命令都不會被執行。

DISCARD 客戶端可以通過這個命令清空事務隊列,視為放棄執行事務。

二、并發下的事務

由于Redis是單線程處理全部用戶請求,因此,在并發事務中,每個命令都會排隊執行,事務之間很可能出現“先刪后取”的問題。

不論 multi 執行的先后,Redis 只根據最先接收到的?exec 命令來執行事務

如上圖所示,綠色事務先開啟事務塊,但是在執行 exec 提交事務之前,被一個刪除事務提前執行,那么綠色事務就無法正確獲取 key 的value。

三、WATCH 提供的 CAS

WATCH 可以讓 exec 命令有條件的執行:事務只能在所有被監視的key都沒有被修改的前提下執行。這是watch為redis提供的check-and-set(CAS)行為。

watch 命令可以被調用多次,對 key 的監視從 watch 執行之后生效,直到調用 exec 為止。當exec 被調用時,不管事務是否成功執行,對所有 key 的監視都會被取消。

使用 無參的 unwatch ,可以手動取消對所有 key 的監視。

如果有至少一個被監視的 key 在 exec 執行之前被修改,那么整個事務都會被取消,exec 返回 nil-reply 來表示事務已經失敗。

上面的兩個客戶端,左側先watch stu 監視,右側客戶端更改 stu ,左側再開啟事務并修改 stu,最后 exec ,返回結果為 nil,且stu最終并沒有被改變。

這種形式的鎖被稱為樂觀鎖,它是一種非常強大的鎖機制,并且因為大多數情況下,不同的客戶端會訪問不同的鍵,碰撞的情況一般都很少,所以通常并不需要進行重試。

另外,當客戶端斷開連接時,該客戶端對 key 的監視也會被取消。

四、事務中的錯誤

使用事務時可能會遇到兩種錯誤:

1、執行 exec 之前入列命令錯誤,如語法、參數名、參數數量等。或其他嚴重錯誤,內存不足等。

2、執行 exec 之后失敗,例如,事務中的命令與處理的類型不匹配等等。

對于第一種錯誤,在 Redis 2.6.5 之前,客戶端會檢查命令入列的返回值,如果是 QUEUED,入列成功,否則入列失敗

從 2.6.5 開始,服務器會對命令入列失敗的情況進行記錄,并在客戶端調用 exec 命令時,拒絕并自動放棄這個事務。

這種改進方式,是為了在 Redis 管道中包含事務,如果是以前的做法,那么一條拼接的多條命令如果中間某個出了問題將很難快速有效的執行,而改進后,情況就變得簡單,發送事務和讀取事務的回復都只需要和服務器進行一次通訊

對于第二種錯誤,exec 執行時或之后出錯,并沒有什么特別的處理,即使事務中有某些命令在執行時產生錯誤,事務中的其他命令仍然會繼續執行

至于事務回復中,有一些是 OK 而有一些是 ERR,就需要由客戶端自己決定如何處理,Redis 不會停止執行事務中的命令

這就是 “Redis 在事務失敗時不進行回滾,而是繼續執行余下的命令”的含義。這樣做有以下幾點優點:

1、Redis 命令只會因為錯誤的語法而失敗(并且這些問題不能在入隊時發現),或是命令用在了錯誤類型的鍵上面:這也就是說,從實用性的角度來說,失敗的命令是由編程錯誤造成的,而這些錯誤應該在開發的過程中被發現,而不應該出現在生產環境中。

2、因為不需要對回滾進行支持,所以 Redis 的內部可以保持簡單且快速。

所以,通常對于精度要求不是特別嚴格的場合,就可以使用 redis 事務,而不應該將其用在類似銀行轉賬的嚴格的事務場合。

?

?

?

總結

以上是生活随笔為你收集整理的Redis 实用技术——事务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品免费看片 | 国产精品一区二区av | 成人综合在线视频 | 亚洲精品国产欧美在线观看 | 黄页网站免费在线观看 | 人人色视频 | 日本 欧美 国产 | 伊人色综合久久天天 | 日本在线观看一区二区三区 | 女生隐私免费看 | 国产草草草 | 久久大胆视频 | 久久久久亚洲日日精品 | 天堂中文8 | 精产国品一二三产区m553麻豆 | 亚洲欧美一区二区在线观看 | 色婷婷综合五月 | 午夜激情视频在线播放 | 黄色大片在线看 | 免费午夜网站 | 特级黄色大片 | 日日天天干 | 国产最新网址 | 精品一区二区三区三区 | 色屁屁草草影院ccyycom | 女性女同性aⅴ免费观女性恋 | 少妇人妻邻居 | 婷婷色基地| 在线观看日本一区二区 | 亚洲高清资源 | 亚洲精品中文字幕乱码三区91 | 在线性视频 | 久久人人艹 | 毛毛毛片| 在线观看av网站 | 久久精品三级 | 懂色一区二区二区av免费观看 | 狗爬女子的视频 | 成人在线免费播放 | 国产一卡二卡在线播放 | 免费在线一级片 | av免费观看在线 | 黄色国产片 | 福利小视频在线观看 | 日韩婷婷 | 免费亚洲一区二区 | 精品自拍视频在线观看 | 欧美a视频 | 国产精品无码一区二区桃花视频 | 亚洲精品乱码久久久久久国产主播 | 国产精品入口夜色视频大尺度 | 九九看片| 污片在线免费看 | 久久亚洲AV成人无码一二三 | 国产成人在线观看 | 久久久久一 | 国产一级黄色电影 | 噜噜噜精品欧美成人 | 亚洲一区二区av在线 | 日韩一区二区在线观看视频 | 超碰免费在线播放 | 国产又粗又硬又黄的视频 | 4438x全国最大成人网 | 国产午夜免费福利 | 三级av免费 | 国产精久久久 | 777精品| 欧美激情视频在线 | 国产美女黄色片 | 国产专区精品 | 日本一区二区在线观看视频 | 神马午夜888 | www.久久久久 | 国产色在线,com | 欧美日韩国产第一页 | 78m78成人免费网站 | 在线免费视频观看 | 9i在线看片成人免费 | 夜夜欢视频 | 中文在线免费观看 | mm131亚洲精品| 亚洲xxxx视频 | 日本电影一区二区三区 | 中文字幕第四页 | 免费a级| 久久久久国产精品无码免费看 | 在线观看免费高清 | 一级黄色片网站 | 就去吻综合 | 亚洲v国产v欧美v久久久久久 | 无码人妻一区二区三区免费n鬼沢 | av大片网站| 日批在线| xxxx视频在线| 不卡一区在线 | 亚洲综合色小说 | 91无套直看片红桃 | 神马久久久久久久久久久 | av在线电影观看 |