redis事務機制

2021-09-27 03:05:18 字數 1176 閱讀 7589

1、 moulti 與 exec

以 moulti 開始乙個事務,然後將多個命令入隊到事務中, 最後由 exec 命令觸發事務, 一併執行事務中的所有命令

2、 discard 命令

discard 命令用於取消乙個事務, 它清空客戶端的整個事務佇列, 然後將客戶端從事務狀態調整回非事務狀態, 最後返回字串 ok 給客戶端, 說明事務已被取消。

3、 watch 命令

watch 命令用於在事務開始之前監視任意數量的鍵: 當呼叫 exec 命令執行事務時, 如果任意乙個被監視的鍵已經被其他客戶端修改了, 那麼整個事務不再執行, 直接返回失敗。

4、**redis執行事務過程原理

5、redis事務與傳統關係型事務的比較

1、 原子性(atomicity)

單個 redis 命令的執行是原子性的,但 redis 沒有在事務上增加任何維持原子性的機制,所以 redis 事務的執行並不是原子性的。

如果乙個事務佇列中的所有命令都被成功地執行,那麼稱這個事務執行成功。

2、 一致性(consistency)

入隊錯誤

在命令入隊的過程中,如果客戶端向伺服器傳送了錯誤的命令,比如命令的引數數量不對,等等, 那麼伺服器將向客戶端返回乙個出錯資訊, 並且將客戶端的事務狀態設為 redis_dirty_exec 。

執行錯誤

如果命令在事務執行的過程中發生錯誤,比如說,對乙個不同型別的 key 執行了錯誤的操作, 那麼 redis 只會將錯誤包含在事務的結果中, 這不會引起事務中斷或整個失敗,不會影響已執行事務命令的結果,也不會影響後面要執行的事務命令, 所以它對事務的一致性也沒有影響。

3、隔離性(isolation)

watch 命令用於在事務開始之前監視任意數量的鍵: 當呼叫 exec 命令執行事務時, 如果任意乙個被監視的鍵已經被其他客戶端修改了, 那麼整個事務不再執行, 直接返回失敗。

4、永續性(durability)

因為事務不過是用佇列包裹起了一組 redis 命令,並沒有提供任何額外的永續性功能,所以事務的永續性由 redis 所使用的持久化模式決定

Redis事務機制

參考學習 redis提供的事務機制,有別於關係型資料庫,因為中途執行失敗,它會跳過,上面執行的操作並不會回滾!它是執行一組命令,下面兩種情況錯誤的處理機制稍有區別 執行時執行錯誤,入隊成功但是執行失敗,會跳過繼續執行 語法錯誤,命令入隊失敗,事務會取消執行 redis在事務執行期間也有可能是被其他操...

redis 過期 淘汰 事務原子機制

set key value ex 60 鍵值對存活60秒 set key value px 60 鍵值對存活60毫秒 expire key 60 key60秒之後失效,在2.6版本之後使用pexpire設定毫秒數 3 檢視乙個key的有效期 ttl key 在2.6版本以上可以使用pttl,檢視毫秒...

redis資料庫的事務機制

redis雖然是nosql資料庫,但是作為被使用廣泛的快取性高速資料庫,當乙個鍵被多個請求同時訪問時,如何保證資料安全呢?其實redis也是有事務機制的,redis的事務機制類似於批處理功能,一旦開啟,不允許被打斷 事務機制的五個常用命令 1,watch 2,unwatch 3,multi 4,ex...