《redis in action》redis事務(wù)和管道寫點(diǎn)筆記關(guān)注共 941字,需瀏覽 2分鐘 ·2021-04-13 05:20 在之前的文章中我們大概學(xué)習(xí)了redis的安全性,主要就是持久化和夸機(jī)備份。這里我們?cè)賮?lái)學(xué)習(xí)一下redis的安全和性能問題。這塊說(shuō)的性能問題主要就是說(shuō)客戶端與服務(wù)端的通信,而不是說(shuō)redis的服務(wù)器的機(jī)器的問題。我們?cè)谥皩W(xué)習(xí)了redis的事務(wù)(multi/exec),當(dāng)時(shí)我們說(shuō)redis事務(wù)是沒有原子性的,所有的命令都是先發(fā)送到服務(wù)端,然后緩存起來(lái),然后再執(zhí)行exec的時(shí)候才進(jìn)行統(tǒng)一執(zhí)行的,如果exec之前發(fā)生了錯(cuò)誤,那么所有提交的命令將不會(huì)被redis執(zhí)行。當(dāng)然如果如果命令執(zhí)行了一半之后報(bào)錯(cuò)了,那么已經(jīng)執(zhí)行的命令也不會(huì)發(fā)生回滾。而且我們當(dāng)時(shí)也說(shuō)過(guò)redis的事務(wù)是阻塞的,直到exec執(zhí)行完畢才能進(jìn)行其他客戶端發(fā)來(lái)的命令。那么redis事務(wù)的問題就是操作指令是一個(gè)個(gè)發(fā)到服務(wù)端,然后緩存,在客戶端調(diào)用exec的時(shí)候再進(jìn)行執(zhí)行。那么有沒有一種方式讓這些命令一次性發(fā)送到服務(wù)端,然后一起執(zhí)行?答案是有得。這就是傳說(shuō)中的管道。管道不是redis提供的命令,redis只是提供了事務(wù)相關(guān)的命令,管道是客戶端的行為。管道分為事務(wù)管道和非事務(wù)管道,事務(wù)管道就是在管道中進(jìn)行multi開啟事務(wù),非事務(wù)管道僅僅是批量執(zhí)行命令。因此性能就會(huì)有差別。通過(guò)實(shí)踐測(cè)試,使用管道比一般傳統(tǒng)模式效率高4-5倍,這塊和網(wǎng)絡(luò)有關(guān)系。了解了管道和事務(wù)的聯(lián)系,我們就知道我們?cè)陧?xiàng)目中應(yīng)該盡可能使用管道,尤其是命令比較多的時(shí)候,除此之外,對(duì)于一些具有并發(fā)特征的數(shù)據(jù)應(yīng)該采用事務(wù)管道,因?yàn)槭聞?wù)管道具有阻塞的功能,也就是串行。在關(guān)系型數(shù)據(jù)庫(kù)中事務(wù)都是采用加鎖的方式進(jìn)行的,redis并沒有采用那種鎖的方式,為什么這樣的原因是redis事務(wù)的時(shí)間是沒有限制的,也不知道前一個(gè)操作何時(shí)完成,redis不想讓客戶端等待,而是讓客戶端盡早知道。另外watch的樂觀鎖機(jī)制也是被動(dòng)的去監(jiān)聽,如果出現(xiàn)了變化,那么就盡早讓客戶端知道改變已經(jīng)發(fā)生,然后進(jìn)行相關(guān)的策略,一句話就是為了快。 瀏覽 56點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào) 評(píng)論圖片表情視頻評(píng)價(jià)全部評(píng)論推薦 《redis in action》redis事務(wù)寫點(diǎn)筆記0Redis in ActionRedis in Action0Redis in ActionRedis is an innovative data tool that offers more 《redis in action》redis復(fù)制寫點(diǎn)筆記0《redis in action》redis發(fā)布訂閱寫點(diǎn)筆記0《redis in action》Redis分布式鎖寫點(diǎn)筆記0《redis in action》Redis做隊(duì)列寫點(diǎn)筆記0《redis in action》Redis鎖超時(shí)和重入鎖寫點(diǎn)筆記0《redis in action》發(fā)布和訂閱寫點(diǎn)筆記0《redis in action》Redis aof持久化寫點(diǎn)筆記0點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào)