直入主題,我們在使用關(guān)系型數(shù)據(jù)庫的時候基本上都會接觸到事務(wù)處理,就是邏輯上的一組操作,組成這組操作的各個單元,要不全都成功要不全都失敗,這就是關(guān)系行數(shù)據(jù)庫的事務(wù)。
事務(wù)是一個單獨的隔離操作:事務(wù)中的所有命令都會序列化、按順序地執(zhí)行。事務(wù)在執(zhí)行的過程中,不會被其他客戶端發(fā)送來的命令請求所打斷。
redis的事務(wù)截然不同,它相對關(guān)系型數(shù)據(jù)庫來說比較簡單,它只能保證一個client發(fā)起的事務(wù)中的命令可以連續(xù)的執(zhí)行,而中間不會插入其他client的命令。使用redis事務(wù)時,客戶端會發(fā)送MULTI命令開始一個事務(wù),隨后客戶端發(fā)送的命令會放到一個隊列中, 等最后客戶端發(fā)送EXEC命令觸發(fā)事務(wù), 一并執(zhí)行事務(wù)中的所有命令。

可以看到,執(zhí)行完set完命令之后,反饋信息是QUEUED,最后再執(zhí)行exec,這些命令才會真正的執(zhí)行
事務(wù)是一個原子操作:事務(wù)中的命令要么全部被執(zhí)行,要么全部都不執(zhí)行。
雖說命令一定會被執(zhí)行,但是成功還是失敗又是另一回事了哈哈哈,下圖舉例:

嗯,沒什么好說的,就是這樣的,redsi事務(wù)也沒有rollback,銘記。
最后這個厲害了啊。
WATCH
WATCH key [key ...]
監(jiān)視一個(或多個) key ,如果在事務(wù)執(zhí)行之前這個(或這些) key 被其他命令所改動,那么事務(wù)將被打斷。
上面就是redis手冊中關(guān)于watch的解釋,使用起來貌似很簡單,就是我在multi之前,用watch去監(jiān)視我要修改的key,如果說我在exec之前,
multi之后的這段時間,key被其他client修改,那么exec就會執(zhí)行失敗,返回(nil)
下圖舉例:

嗯,不管怎么樣這個技能我是get到了。
哦忘了介紹命令:

最后說一句,夏天這個東西很快就來了減肥的要馬甲線的抓緊了。
