自己0基礎(chǔ)怎么創(chuàng)業(yè)seo搜索引擎優(yōu)化人員
redis也支持事務(wù),但與MySQL等關(guān)系型數(shù)據(jù)庫(kù)相比,redis的事務(wù)比較簡(jiǎn)單。
一、redis事務(wù)的特點(diǎn)
1、redis的事務(wù)是一組命令集合
????可以把redis的事務(wù)看成一個(gè)命令的緩存,把一組要執(zhí)行的命令添加到集合中,然后按順序一起執(zhí)行。
2、redis事務(wù)沒(méi)有隔離級(jí)別
????由于redis是單線程的,下一個(gè)命令必須在上一個(gè)命令完成后才會(huì)執(zhí)行。因此不會(huì)有多個(gè)事務(wù)同時(shí)執(zhí)行的情況,因此也就不需要定義隔離級(jí)別。
3、redis事務(wù)不保證原子性
????redis的單條命令是保證原子性的,但是事務(wù)不保證原子性,即事務(wù)中某個(gè)命令的失敗不會(huì)影響其它命令的執(zhí)行和結(jié)果。
二、事務(wù)的實(shí)現(xiàn)步驟
1、開(kāi)啟事務(wù)
multi命令用于開(kāi)啟一個(gè)事務(wù),此命令沒(méi)有參數(shù)
2、添加命令
????編寫(xiě)要執(zhí)行的數(shù)據(jù)庫(kù)操作命令
3、執(zhí)行事務(wù)或取消事務(wù)
1)使用exec命令執(zhí)行事務(wù)
示例
multi
set str1 ? '字符串1'
set str2 '字符串2'
exec
2)使用discard命令取消事務(wù)
multi
set str1 '字符串1'
set str2 '字符串2'
discard
三、事務(wù)監(jiān)聽(tīng)
????事務(wù)監(jiān)聽(tīng)可以用于做為事務(wù)鎖(樂(lè)觀鎖)使用,當(dāng)另一個(gè)程序修改了某個(gè)key的值時(shí),當(dāng)前事務(wù)會(huì)被中斷執(zhí)行。
1、開(kāi)啟監(jiān)聽(tīng)
????在事務(wù)創(chuàng)建之前使用watch命令可以監(jiān)聽(tīng)key的變化,當(dāng)使用exec開(kāi)始執(zhí)行事務(wù)時(shí),會(huì)檢查被監(jiān)聽(tīng)的key是否有變化,如果有變化,則中斷事務(wù)的執(zhí)行。
語(yǔ)法
watch key [key...]
2、取消監(jiān)聽(tīng)
????當(dāng)事務(wù)已開(kāi)始執(zhí)行或是取消,則會(huì)自動(dòng)取消監(jiān)聽(tīng),也可以使用unwatch命令手動(dòng)結(jié)束監(jiān)聽(tīng)。
示例
watch str1
multi
set str1 '字符串1'
unwatch //取消監(jiān)聽(tīng),后面必須還有語(yǔ)句,否則無(wú)效
set str2 '字符串2'
exec ? ? ? //因在執(zhí)行前修改了str1的值,執(zhí)行會(huì)被中斷//在另一個(gè)命令行窗口執(zhí)行以下命令,此命令需要在exec之前執(zhí)行
set str1 '字符串11'
?
?文章來(lái)源于嗶站《Redis的事務(wù)管理》
更多學(xué)習(xí)視頻和專(zhuān)欄文章請(qǐng)到嗶站個(gè)人空間: 布道師學(xué)院的個(gè)人空間-布道師學(xué)院個(gè)人主頁(yè)-嗶哩嗶哩視頻
更多資源和項(xiàng)目下載請(qǐng)到:”開(kāi)源吧(找實(shí)戰(zhàn)項(xiàng)目和畢設(shè)項(xiàng)目的好網(wǎng)站)“?? :開(kāi)源吧
?