redis事務常用操作詳解

2022-09-25 18:06:08 字數 1292 閱讀 1585

事務

multi 、 exec 、 d 和 watch 是 redis 事務相關的命令。事務可以一次執行多個命令, 並且帶有以下兩個重要的保證:

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

事務是乙個原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。

exec 命令負責觸發並執行事務中的所有命令:

如果客戶端在使用 multi 開啟了乙個事務之後,卻因為斷線而沒有成功執行 exec ,那麼事務中的程式設計客棧所有命令都不會被執行。

另一方面,如果客戶端成功在開啟事務之後執行 exec ,那麼事務中的所有命令都會被執行。

當使用 aof 方式做持久化的時候, redis 會使用單個 write(2) 命令將事務寫入到磁碟中。

然而,如果 redis 伺服器因為某些原因被管理員殺死,或者遇上某種硬體故障,那麼可能只有部分事務命令會被成功寫入到磁碟中。

如果 redis 在重新啟動時發現 aof 檔案出了這樣的問題,那麼它會退出,並匯報乙個錯誤。

使用redis-check-aof程式可以修復這一問題:它會移除 aof 檔案中不完整事務的資訊,確保伺服器可以順利啟動。

從 2.2 版本開始,redis 還可以通過樂觀鎖(optimistic lock)實現 cas (check-and-set)操作,具體資訊請參考文件的後半部分。redis事務可以執行一系列的指令碼,並且帶有以下兩個重要的保證:

批量的命令在exec命令之前,事務中任意命令執行失敗,其餘的命令依然被執行。在事務執行過程,其他客戶端提交的命令請求不會插入到事務執行命令序列中。

乙個事務從開始到執行會經歷以下三個階段:開始-入隊-執行。本文介紹下redis事務的常用命令。

discard取消事務,放棄執行事務塊內的所有命令。命令的執行如下所示。先選取一段命令,然後執行該命令取消

exec命令:執行所有的指令碼命令。事務塊內所有命令的返回值,按命令執行的先後順序排列。 當操作被打斷時,返回空值 nil 。

# 監視 key ,且事務成功執行。可以監控key的值的變化以及執程式設計客棧行事務的執**況。

# 監視 key ,且事務執行中斷。可以監控事務的執**況,以及事務中斷的情況。

redis multi 命令。用於標記乙個事務塊的開始。事務塊內的多條命令會按照先後順序被放進乙個佇列當中,輸入完成命令之後,輸入exec執行命令。

unwatch命令用於取消事務的程式設計客棧監視。當輸入乙個命令監視時,可程式設計客棧以通過unwatch命令,取消對命令的監視。

本文標題: redis事務常用操作詳解

本文位址:

Redis 事務 詳解

redis 事務可以一次執行多個命令,並且帶有以下兩個重要的保證 1 事務是乙個單獨的隔離操作 事務中的所有命令都會序列化 按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷 2 事務是乙個原子操作 事務中的命令要麼全部被執行,要麼全部都不執行 乙個事務從開始到執行會經歷以下三...

redis 事務操作

redis事務操作 multi 命令用於開啟乙個事務,它總是返回ok。multi 執行之後,客戶端可以繼續向伺服器傳送任意多條命令,這些命令不會立即被執行,而是被放到乙個佇列中,當 exec命令被呼叫時,所有佇列中的命令才會被執行。另一方面,通過呼叫 discard 客戶端可以清空事務佇列,並放棄執...

Redis事務操作

事務有以下特性 原子性 atomicity 原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,這和前面兩篇部落格介紹事務的功能是一樣的概念,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。一致性 consistency 一致性是指事務必須使資料庫從乙個...