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

歡迎訪問 生活随笔!

生活随笔

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

数据库

Redis的事务

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

1.概述

可以一次執行多個命令,本質是一組命令的集合。一個事務中的所有命令都會序列化,按順序地串行化執行而不會被其它命令插入,不許加塞。

2.常用命令

3.正常執行

4.放棄事務

5.全體連坐

有一條指令在執行時語法報錯,則所有事務中的指令全部執行失敗

6.冤頭債主

有一條指令在提交的時候運行出錯,其它事務不受影響,出錯的事務單獨執行失敗

7.watch監控

(1)悲觀鎖/樂觀鎖

1)悲觀鎖

每次去拿數據的時候都認為別人會修改,所以每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關系型數據庫里邊就用到了很多這種鎖機制,比如行鎖、表鎖等,讀鎖、寫鎖等,都是在寫操作之前先上鎖。

2)樂觀鎖

每次去拿數據的時候都認為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可以使用版本號等機制。樂觀鎖適合于多讀的應用類型,這樣可以提高吞吐量。

樂觀鎖策略:提交版本必須大于記錄當前版本才能執行更新。

(2)加塞篡改

1)無加塞篡改

先監控,再開啟multi,最后提交,事務執行成功。

2)有加塞篡改

監控了key,如果key被修改了,后面一個事務執行失效。

如果還想要執行,需要先unwatch取消監聽,再重新監聽開啟事務修改。

(3)小結

1)一旦執行了exec之前加的監控鎖都會被取消掉。

2) Watch指令,類似樂觀鎖,事務提交時,如果Key的值已被別的客戶端改變,比如某個list已被別的客戶端push/pop過了,整個事務隊列都不會被執行。

3) 通過WATCH命令在事務執行之前監控了多個Keys,倘若在WATCH之后有任何Key的值發生了變化,EXEC命令執行的事務都將被放棄,同時返回Nullmulti-bulk應答以通知調用者事務執行失敗。

8. 3個階段

1)開啟:以MULTI開始一個事務。

2)入隊:將多個命令入隊到事務中,接到這些命令并不會立即執行,而是放到等待執行的事務隊列里面。

3)執行:由EXEC命令觸發事務

9.3個特性

1)單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。

2)沒有隔離級別的概念:隊列中的命令沒有提交之前都不會實際的被執行,因為事務提交前任何指令都不會被實際執行,也就不存在”事務內的查詢要看到事務里的更新,在事務外查詢不能看到”這個讓人萬分頭痛的問題

3)不保證原子性:redis同一個事務中如果有一條命令執行失敗,其后的命令仍然會被執行,沒有回滾

總結

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

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