redis學習3 事務

2021-10-23 19:42:32 字數 1045 閱讀 2215

是什麼?

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

能幹嘛?

乙個佇列中,一次性,順序性,排他性的完成一系列的命令

常用命令

discard取消事務,放棄執行事務塊內所有命令

exec執行所有事務塊的命令

multi標記乙個事務塊的開始

unwatch取消watch命令對所有key的監視

watchkey 【key 。。。。】 監視乙個或多個key,如果在事務執行之前這些key被其他命令所改動,那麼事務將被打斷。

notice:如果在事務中有乙個操作失敗(一般是語法問題導致無法加入到queue中),則其他的全部失敗(即要麼全部成功,要麼全部失敗)如下圖:

notice2: 如果語法正常,可以被正常加入到queue中,那麼事務提交時候只會是有問題的那條命令執行失敗,其他的成功。

k1 是aa ,無法incr 加1 。事務提交後才能判斷有問題,因此只此條命令執行失敗,不影響其他的命令提交。

悲觀鎖、樂觀鎖、cas

悲觀鎖:顧名思義,每次去拿資料都會認為別人會修改,所以每次拿資料時候都會上鎖,這樣別人想拿著個資料就會block直到它拿到鎖。傳統的關係型資料庫裡邊就用到了很多這種鎖機制。比如行鎖、表鎖,讀鎖,寫鎖等,都是再操作之前上鎖。

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

樂觀鎖策略:提交版本號必須大於記錄當前版本才能執行更新小結

3階段

3 特性

Redis學習 3 事務

redis 事務可以一次執行多個命令,並且帶有以下三個重要的保證 乙個事務從開始到執行會經歷以下三個階段 redis 127.0.0.1 6379 multi okredis 127.0.0.1 6379 set book name mastering c in 21 days queued red...

Redis學習筆記 Redis事務

redis事務可以一次執行多個命令 按順序地序列執行,執行中不會被其他命令插入,不許加塞 1.簡介 redis事務可以一次執行多個命令 允許在一次單獨的步驟中執行一組命令 特徵 1 批量操作在傳送exec命令前被放入佇列快取 2 收到exec命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然...

redis學習之redis事務

redis事務的本質是一組命令的集合。事務支援一次執行多個命令,乙個事務中所有命令都會被序列化。在事務執行過程中,會按照順序序列化執行佇列中的命令,其他客戶端提交的命令請求不會插入到事務執行命令序列中。總結來說 redis事務就是一次性 順序性 排他性的執行乙個佇列中的一系列命令。批量操作在傳送ex...