------------------- Redis訂閱和發佈模式-------------------
1,概念
Redis發佈訂閱發佈/訂閱)是一種消息通訊模式:
發送者(酒館)發送消息,
訂閱者(子)接收消息。
Redis的客戶端能夠訂閱任意數量的頻道。redis
2,訂閱頻道:訂閱個指定頻道的信息微信
3,發佈頻道消息:將信息消息發送到指定的頻道頻道ide
4,應用場景
1,今日頭條訂閱號,×××系統
2,即便通訊系統
3中,羣聊部落系統(微信羣)測試
5,測試實踐:微信班級羣class:20170101
1,學生C
訂閱一個主題叫:class:20170101 > subscribe class:20170101
2,學生A針對class:20170101主體發送消息,那麼全部訂閱該主題的用戶都可以接收到該數據。
>出版類:20170101! 「世界你好我是」
3,學生乙針對等級:20170101主體發送消息,那麼全部訂閱該主題的用戶都可以接收到該數據
>出版類:20170101「你好我是B「
展現學生C接受到的A \ B同窗發送過來的消息信息
1)」subscribe「
2)」class:20170101「
3)(integer)1
1)」message「
2)」class:20170101 「
3)」hello world!I am a「
1)」message「
2)」class:20170101「
3)」hello word!I am B「事務
------------------- Redis事務-------------------
1,概念:
redis中的事務是一組命令的集合。事務同命令同樣都是Redis的的最小執行單位,一個事務中的命令要麼都執行,要麼都不執行。get
2,事務的兩種屬性
1,事務是一個單獨的隔離操做:事務中的全部命令都會序列化,按順序的執行事務在執行的過程當中,不會被其餘客戶端發送過來的命令請求所打斷
。2,redis事務是原子。原子意味着要什麼全部的命令都執行,要麼都不執行。it
3,事務從開始到執行經歷的三個階段
1,開始事務:多
>多 - 肯定class
2,命令入隊
> set「strOne」「hello」
>設置「strTwo」「world」
>設置「strThree」「!」監控
3,執行事務:exec
> exec序列化
4,事務執行是常見錯誤:
1,語法錯誤:語法錯誤指令不存在或命令參數的個數不對
。2,運行錯誤:運行錯誤指令執行時出現的錯誤,好比使用散列類型的命令操做集合類型的鍵,這種錯誤在實際執行以前的Redis是沒法發現的,因此在事務裏這樣的命令是會被Redis的接受並執行的。若是事務裏的一條命令出現了運行錯誤,事務裏其餘的命令依然會繼續執行
> multi
> set key 1
> sadd key 2
> set key 3
> exec
1)OK
2)(錯誤)WRONGTYPE針對保存錯誤類型值的鍵的操做
3)OK
> get key --- 「3」
5,觀看命令:能夠監控一個或多個鍵,一旦其中一個鍵被修改(或刪除),以後的事務就不會執行監控一直持續到EXEC命令(事務中的命令是在EXEC以後才執行的,因此在多命令後能夠修改watch監控的鍵值)
> set key 1 --- OK
> watch key --- OK
> set key 2 --- OK
> multi --- OK
> set key 3 --- QUEUED
> exec ---(nil)
>得到密鑰---「2」
def incr($ key): watch $ key $ value = GET $ key 若是不是$ value: $ value = 0 $ value = $ value + 1 MULTI SET $ key,$ value resule = EXEC return resule [0]