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

熱問標(biao)簽 更多>>
大家都在問(wen) 更多>>
java合并(bing)兩個數組(zu)并(bing)升序排(pai)列怎么...
java合(he)并(bing)兩(liang)個數組并(bing)排序怎么操作
java多行字符串輸入(ru)怎(zen)么(me)操作