在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/人工智能/ redis 單進(jìn)程單線程 怎么對(duì)事務(wù)卻沒(méi)有串行化?

redis 單進(jìn)程單線程 怎么對(duì)事務(wù)卻沒(méi)有串行化?

redis既然是單進(jìn)程單線程的, 那么不管多少客戶端連接上來(lái)進(jìn)行操作, redis服務(wù)端應(yīng)該都是一個(gè)個(gè)串行執(zhí)行;

在網(wǎng)上看到有些資料:

事務(wù)執(zhí)行期間,Redis不會(huì)再為其它客戶端的請(qǐng)求提供任何服務(wù),從而保證了事物中的所有命令被原子的執(zhí)行

但事實(shí)上, 到了事務(wù)并發(fā)執(zhí)行起來(lái), 還要結(jié)合watch, 不應(yīng)該是串行的么? 事務(wù)A開(kāi)始后,即使有事務(wù)B也是排在事務(wù)A之后啊, 為啥還要結(jié)合watch?

回答
編輯回答
爛人
2017年10月18日 04:46
編輯回答
小眼睛

因?yàn)楫?dāng)多個(gè)client端同時(shí)發(fā)送命令時(shí),redis處理命令的順序是不確定的.
如A事務(wù)中有c,d,e三個(gè)命令,B事務(wù)中h,l兩個(gè)命令,當(dāng)兩個(gè)客戶端同時(shí)發(fā)送給redis時(shí),redis可能先執(zhí)行c,然后又執(zhí)行了h,順序可能變成 c->h->d->l->e.而期望的順序是c->d->e->h->l.因此只有redis在事務(wù)執(zhí)行期間,不再響應(yīng)其他客戶端請(qǐng)求,才能保證一個(gè)客戶端上的事務(wù)完整按序執(zhí)行.

2017年8月19日 13:14