亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

如果你了解過關系型數據庫事務的話,相信這篇文章對你來說是很容易理解的了。具體什么是事務我就不說不多了,直接講 redis 事務相關的部分。

首先,我們先來看下,Redis 是怎么執行事務的。

1. 事務執行過程

show code:

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a test1
QUEUED
127.0.0.1:6379> set b test2
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get a
"test1"
127.0.0.1:6379> get b
"test2"

一個事務的開始到結束會經過以下 3 個過程

  1. 事務開始
  2. 命令入隊
  3. 事務執行

結合上面的例子,用人話介紹這 3 個過程就是:

Redis 執行 multi 命令標志事務開始。

當客戶端切換至事務狀態后,服務端會將除了 exec、discard(取消事務,放棄執行事務塊內的所有命令)、watch 和 multi 以外的命令放進一個先進先出的事務隊列中。即上面例子的 2 個 set 命令會被放進隊列,并返回 QUEUED 給客戶端。

當客戶端發送 exec 命令時,服務端會立即執行該命令。遍歷這個客戶端的事務隊列,執行隊列保存的所有命令。最后將執行命令所得結果返回給客戶端。

2. Redis 事務和關系型事務的區別

兩者最大區別就是 Redis 事務不支持回滾。即使事務隊列中某個命令在執行期間發生了錯誤,事務也會繼續執行,直到事務隊列中所有命令執行完成。

文字貌似不夠直觀,沒事,看下面的例子你就馬上明白了。

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set msg test
QUEUED
127.0.0.1:6379> lpop msg
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> get msg
"test"      // 不受后面錯誤命令影響

PS:如果客戶端向事務入列一個錯誤的命令(比如輸入一個不存在的命令,像:sett 命令),那么該事務將不被服務端執行。該情況是入隊錯誤,上面例子是執行錯誤的情況。

3. watch

提到 redis 事務,就不得不提 watch 命令了。

該命令是一個樂觀鎖,只能在客戶端進入事務狀態之前執行。

作用是 exec 命令執行之前,監視任何數量個鍵,并在 exec 命令執行時,檢查被監視的鍵是否至少有一個已經被修改過。若是則拒絕執行事務,否則執行。

當 exec 執行完成后,這次事務也就結束了。

我們依舊來看一個簡單的栗子:

127.0.0.1:6379> SET msg test  //設置 msg 的值
OK
127.0.0.1:6379> WATCH msg //監視 msg
OK
127.0.0.1:6379> SET msg test2 //修改 msg 的值(或其他客戶端在該客戶端執行 exec 命令之前修改該值)
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET msg test3
QUEUED
127.0.0.1:6379> GET msg
QUEUED
127.0.0.1:6379> EXEC 
(nil)   //執行失敗

 

原文地址:
https://www.cnblogs.com/czd-xi/p/16071242.html

分享到:
標簽:事務 Redis
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定