redis事務(wù)常用操作詳解
事務(wù)
MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事務(wù)相關(guān)的命令。事務(wù)可以一次執(zhí)行多個(gè)命令, 并且?guī)в幸韵聝蓚€(gè)重要的保證:
事務(wù)是一個(gè)單獨(dú)的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行。事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷。
事務(wù)是一個(gè)原子操作:事務(wù)中的命令要么全部被執(zhí)行,要么全部都不執(zhí)行。
EXEC 命令負(fù)責(zé)觸發(fā)并執(zhí)行事務(wù)中的所有命令:
如果客戶端在使用 MULTI 開啟了一個(gè)事務(wù)之后,卻因?yàn)閿嗑€而沒有成功執(zhí)行 EXEC ,那么事務(wù)中的所有命令都不會被執(zhí)行。
另一方面,如果客戶端成功在開啟事務(wù)之后執(zhí)行 EXEC ,那么事務(wù)中的所有命令都會被執(zhí)行。
當(dāng)使用 AOF 方式做持久化的時(shí)候, Redis 會使用單個(gè) write(2) 命令將事務(wù)寫入到磁盤中。
然而,如果 Redis 服務(wù)器因?yàn)槟承┰虮还芾韱T殺死,或者遇上某種硬件故障,那么可能只有部分事務(wù)命令會被成功寫入到磁盤中。
如果 Redis 在重新啟動時(shí)發(fā)現(xiàn) AOF 文件出了這樣的問題,那么它會退出,并匯報(bào)一個(gè)錯(cuò)誤。
使用redis-check-aof程序可以修復(fù)這一問題:它會移除 AOF 文件中不完整事務(wù)的信息,確保服務(wù)器可以順利啟動。
從 2.2 版本開始,Redis 還可以通過樂觀鎖(optimistic lock)實(shí)現(xiàn) CAS (check-and-set)操作,具體信息請參考文檔的后半部分。Redis事務(wù)可以執(zhí)行一系列的腳本,并且?guī)в幸韵聝蓚€(gè)重要的保證:
批量的命令在Exec命令之前,事務(wù)中任意命令執(zhí)行失敗,其余的命令依然被執(zhí)行。在事務(wù)執(zhí)行過程,其他客戶端提交的命令請求不會插入到事務(wù)執(zhí)行命令序列中。
一個(gè)事務(wù)從開始到執(zhí)行會經(jīng)歷以下三個(gè)階段:開始-入隊(duì)-執(zhí)行。本文介紹下Redis事務(wù)的常用命令。
DISCARD取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令。命令的執(zhí)行如下所示。先選取一段命令,然后執(zhí)行該命令取消
Exec命令:執(zhí)行所有的腳本命令。事務(wù)塊內(nèi)所有命令的返回值,按命令執(zhí)行的先后順序排列。 當(dāng)操作被打斷時(shí),返回空值 nil 。
# 監(jiān)視 key ,且事務(wù)成功執(zhí)行??梢员O(jiān)控Key的值的變化以及執(zhí)行事務(wù)的執(zhí)行情況。
# 監(jiān)視 key ,且事務(wù)執(zhí)行中斷??梢员O(jiān)控事務(wù)的執(zhí)行情況,以及事務(wù)中斷的情況。
Redis Multi 命令。用于標(biāo)記一個(gè)事務(wù)塊的開始。事務(wù)塊內(nèi)的多條命令會按照先后順序被放進(jìn)一個(gè)隊(duì)列當(dāng)中,輸入完成命令之后,輸入exec執(zhí)行命令。
UNwatch命令用于取消事務(wù)的監(jiān)視。當(dāng)輸入一個(gè)命令監(jiān)視時(shí),可以通過UNwatch命令,取消對命令的監(jiān)視。
相關(guān)文章
Redis中的數(shù)據(jù)結(jié)構(gòu)跳表詳解
跳表是一種基于并聯(lián)的鏈表結(jié)構(gòu),用于在有序元素序列中快速查找元素的數(shù)據(jù)結(jié)構(gòu),本文給大家介紹Redis中的數(shù)據(jù)結(jié)構(gòu)跳表,感興趣的朋友跟隨小編一起看看吧2024-06-06基于session?Redis實(shí)現(xiàn)登錄
這篇文章主要介紹了基于session?Redis實(shí)現(xiàn)登錄的相關(guān)資料,需要的朋友可以參考下2023-10-10基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié)
本文主要介紹了基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07