能夠一次執行多個命令,本質是一組命令的集合。一個事務中的 全部命令都會序列化,按順序地串行化執行而不會被其它命令插入,不準加塞。redis
事務能作的事: 一個隊列中,一次性、順序性、排他性的執行一系列命令d數據庫
經常使用命令:3d
下面的演示說明: Redis是部分支持事務的。不保證原子性。code
首先介紹了樂觀鎖和悲觀鎖:cdn
Pessimistic Lock
): 顧名思義,就是很悲觀,每次去拿數據的時候都認爲別人會修改,因此每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了不少這種鎖機制,好比行鎖,表鎖等,讀鎖,寫鎖等,都是在作操做以前先上鎖。Optimistic Lock
) : 顧名思義,就是很樂觀,每次去拿數據的時候都認爲別人不會修改,因此不會上鎖,可是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可使用版本號(version)等機制。樂觀鎖適用於多讀的應用類型,這樣能夠提升吞吐量。 樂觀鎖策略:提交版本必須大於記錄當前版本才能執行更新。WATCH監控案例: (餘額和消費),例如餘額爲100
,消費爲0
,餘額爲80
,消費爲20
.....blog
①先看一波正常執行的:隊列
②第二波,有另外一個客戶端修改了咱們WATCH
的key。進程
③第三波,使用UNWATCH。事務
總結:it
exec
以前加的監控鎖都會被取消掉了。push/pop
過了,整個事務隊列都不會被執行。三個階段:
三個特性:
概念:
左邊窗口開始訂閱c一、c二、c3
三個頻道。右邊尚未操做。
而後右邊開始發佈消息。
總結:
先訂閱後發佈後才能收到消息,
SUBSCRIBE c1 c2 c3
。PUBLISH c2 hello-redis
。*
,PSUBSCRIBE new*
。PUBLISH new1 redis2015
。