推薦答案
Redis的事務(wu)使用MULTI、EXEC、DISCARD、WATCH等命令來(lai)實現(xian),具(ju)體介紹如(ru)下:
MULTI:標記事務塊的(de)開始。所有(you)后續命(ming)令都將(jiang)被(bei)視為事務的(de)一部(bu)分,直到執行EXEC命(ming)令。
EXEC:執行事(shi)務塊中(zhong)的所有命令(ling)。如果其中(zhong)有任(ren)何一個命令(ling)執行失(shi)敗,整個事(shi)務塊都將被取消。
DISCARD:取(qu)消事務塊中的(de)所(suo)有(you)(you)命(ming)令,放棄(qi)所(suo)有(you)(you)對數(shu)據庫的(de)修改。
WATCH:監視一個或多(duo)個鍵,如果在事務(wu)塊執(zhi)行期間這(zhe)些鍵被(bei)修改,事務(wu)塊將(jiang)被(bei)取消。
除(chu)了(le)以上的(de)基本事(shi)務命(ming)令(ling)之外,Redis還提供了(le)一些額外的(de)命(ming)令(ling)來管理事(shi)務:
UNWATCH:取消所有已經(jing)設置為(wei)監視狀態的鍵。
EXECABORT:終(zhong)止當前(qian)正在(zai)執(zhi)行的事務塊,并將其中(zhong)的所有命令清(qing)除。
DISCARDALL:放棄所有的事務塊。
在使(shi)用(yong)Redis事(shi)務時,需要注意以下幾點:
Redis事務是原(yuan)子性的(de)(de),如(ru)果其(qi)中任何一個命令(ling)執行失敗(bai),整個事務塊都(dou)將被取消(xiao),包括所有已經執行的(de)(de)命令(ling)。
Redis事務是順序執(zhi)(zhi)行的,一旦(dan)MULTI命令(ling)被執(zhi)(zhi)行,后續所有命令(ling)都(dou)被加入到(dao)一個(ge)隊列中,直到(dao)執(zhi)(zhi)行EXEC命令(ling)。
Redis事務是非阻(zu)塞(sai)的,當MULTI命令被執(zhi)行后,Redis將不會阻(zu)塞(sai)客戶端的其他(ta)請求,直到執(zhi)行EXEC命令。
其他答案
-
redis事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)是一組命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling),可(ke)(ke)(ke)以原子(zi)性(xing)(xing)地執(zhi)(zhi)(zhi)行(xing)(xing)一系列(lie)(lie)redis命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)。當執(zhi)(zhi)(zhi)行(xing)(xing)完所(suo)(suo)有(you)(you)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)后(hou),才會(hui)(hui)將(jiang)(jiang)(jiang)結果(guo)(guo)返(fan)回(hui)(hui)給客(ke)戶端(duan)。如(ru)果(guo)(guo)任意(yi)(yi)(yi)一條(tiao)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)執(zhi)(zhi)(zhi)行(xing)(xing)失敗,則全部回(hui)(hui)滾(gun)。在redis中(zhong),事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)通(tong)過MULTI、EXEC、DISCARD和WATCH命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)來實現。這(zhe)些命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)使(shi)redis能夠提供一種可(ke)(ke)(ke)靠的(de)(de)應用(yong)程序編程模型(xing),可(ke)(ke)(ke)以保(bao)證數(shu)據的(de)(de)一致性(xing)(xing)和可(ke)(ke)(ke)靠性(xing)(xing)。MULTI命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)用(yong)于開(kai)始一個(ge)(ge)(ge)(ge)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)。執(zhi)(zhi)(zhi)行(xing)(xing)MULTI命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)后(hou),所(suo)(suo)有(you)(you)后(hou)續發送(song)到redis服務(wu)(wu)(wu)(wu)器的(de)(de)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)都將(jiang)(jiang)(jiang)被放入(ru)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)隊(dui)列(lie)(lie)中(zhong),而不(bu)(bu)是立即(ji)執(zhi)(zhi)(zhi)行(xing)(xing)。這(zhe)個(ge)(ge)(ge)(ge)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)沒(mei)有(you)(you)參數(shu),只需(xu)要調用(yong)即(ji)可(ke)(ke)(ke)。EXEC命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)用(yong)于執(zhi)(zhi)(zhi)行(xing)(xing)一個(ge)(ge)(ge)(ge)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu),并(bing)將(jiang)(jiang)(jiang)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)隊(dui)列(lie)(lie)中(zhong)的(de)(de)所(suo)(suo)有(you)(you)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)打包(bao)成一個(ge)(ge)(ge)(ge)原子(zi)性(xing)(xing)操作。如(ru)果(guo)(guo)所(suo)(suo)有(you)(you)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)都執(zhi)(zhi)(zhi)行(xing)(xing)成功,則返(fan)回(hui)(hui)每個(ge)(ge)(ge)(ge)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)的(de)(de)結果(guo)(guo)。如(ru)果(guo)(guo)任意(yi)(yi)(yi)一條(tiao)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)執(zhi)(zhi)(zhi)行(xing)(xing)失敗,則所(suo)(suo)有(you)(you)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)都將(jiang)(jiang)(jiang)回(hui)(hui)滾(gun)并(bing)返(fan)回(hui)(hui)空。注(zhu)意(yi)(yi)(yi),如(ru)果(guo)(guo)使(shi)用(yong)WATCH命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)監(jian)(jian)視(shi)了(le)一個(ge)(ge)(ge)(ge)鍵(jian),那么如(ru)果(guo)(guo)該(gai)鍵(jian)在事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)執(zhi)(zhi)(zhi)行(xing)(xing)前被修改(gai),事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)將(jiang)(jiang)(jiang)會(hui)(hui)中(zhong)止(zhi)并(bing)返(fan)回(hui)(hui)空。DISCARD命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)用(yong)于取消一個(ge)(ge)(ge)(ge)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)。如(ru)果(guo)(guo)在執(zhi)(zhi)(zhi)行(xing)(xing)MULTI命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)后(hou),客(ke)戶端(duan)不(bu)(bu)想執(zhi)(zhi)(zhi)行(xing)(xing)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu),可(ke)(ke)(ke)以使(shi)用(yong)DISCARD命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)將(jiang)(jiang)(jiang)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)刪除。WATCH命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)用(yong)于監(jian)(jian)視(shi)一個(ge)(ge)(ge)(ge)或多個(ge)(ge)(ge)(ge)鍵(jian),當任何監(jian)(jian)視(shi)的(de)(de)鍵(jian)被修改(gai)時(shi),事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)將(jiang)(jiang)(jiang)被中(zhong)止(zhi)。如(ru)果(guo)(guo)KEYS參數(shu)是一個(ge)(ge)(ge)(ge)列(lie)(lie)表(biao),那么將(jiang)(jiang)(jiang)監(jian)(jian)視(shi)列(lie)(lie)表(biao)中(zhong)的(de)(de)所(suo)(suo)有(you)(you)鍵(jian)。通(tong)過調用(yong)WATCH命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling),redis會(hui)(hui)將(jiang)(jiang)(jiang)這(zhe)些鍵(jian)放入(ru)一個(ge)(ge)(ge)(ge)監(jian)(jian)視(shi)隊(dui)列(lie)(lie)中(zhong)。如(ru)果(guo)(guo)事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)中(zhong)執(zhi)(zhi)(zhi)行(xing)(xing)了(le)一個(ge)(ge)(ge)(ge)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling),且該(gai)命(ming)(ming)(ming)(ming)(ming)(ming)令(ling)(ling)(ling)(ling)(ling)(ling)(ling)中(zhong)使(shi)用(yong)的(de)(de)鍵(jian)被其(qi)他(ta)客(ke)戶端(duan)修改(gai),則事(shi)(shi)(shi)務(wu)(wu)(wu)(wu)將(jiang)(jiang)(jiang)自動回(hui)(hui)滾(gun)。
-
Redis事務(wu)相關的命令有(you)以下幾(ji)個:- MULTI:開啟(qi)事務(wu),Redis會(hui)(hui)將后續的命令逐個放入隊(dui)列(lie)中,然后使用(yong)EXEC命令來(lai)原(yuan)子化執行這個命令系列(lie)。- EXEC:執行事務(wu)中的所有(you)操作命令。- DISCARD:取(qu)消(xiao)事務(wu),放棄執行事務(wu)塊(kuai)中的所有(you)命令。- WATCH:監視一(yi)個或多個key,如果事務(wu)在(zai)執行前,這個key被其他命令修改,則事務(wu)被中斷(duan),不會(hui)(hui)執行事務(wu)中的任(ren)何命令。

熱問(wen)標簽 更多>>
大家都在問 更多>>
java合并兩個數組并升序排列怎(zen)么...
java合并兩(liang)個數(shu)組并排序怎么操作
java多行字符(fu)串(chuan)輸(shu)入怎么操作