事務:
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> sadd "user:1:state" 1
QUEUED
127.0.0.1:6379> SADD "user:2:state" 2
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 1
2) (integer) 1
由MULTI發起事務,後面的sadd命令來實現關注和被關注的操作,redis並沒有執行這些命令,而是返回QUEUED表示這兩條命令已經進入等待執行的事務隊列中。
當exec之後告訴redis將等待的食物隊列中的所有命令按照發送順序依次執行。exec的返回值順序和命令的順序相同。
1.語法錯誤:
語法錯誤指命令不存在或者命令的參數個數不對,如下:
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set name Mike
QUEUED
127.0.0.1:6379> errorcommand name
(error) ERR unknown command 'errorcommand'
127.0.0.1:6379> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
由於存在不正確的命令,redis直接返回錯誤把整個事務discard了。它連語法正確的都不會執行,如下:
127.0.0.1:6379> MGET name
1) (nil)
2.運行錯誤:運行錯誤是命令執行時出現的錯誤,比如使用了錯誤命令操作數據類型。
這種錯誤redis會繼續執行,redis無法發現錯誤。
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set name hello
QUEUED
127.0.0.1:6379> SADD name 3
QUEUED
127.0.0.1:6379> SET name "abc"
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) OK
127.0.0.1:6379> GET name
"abc"
這種錯誤只能依賴程序員去把握與檢查錯誤。
WATCH命令:監控一個或多個鍵,一但其中某個鍵值被修改,之後的事務就不會執行。監控會一直持續到exec命令。
127.0.0.1:6379> SET key 1
OK
127.0.0.1:6379> WATCH key
OK
127.0.0.1:6379> SET key 2
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET key 3
QUEUED
127.0.0.1:6379> EXEC
(nil) // 返回nil,說明監視的ticket已經改變了,事務就取消了.
127.0.0.1:6379> GET key
"2"
發佈/訂閱 分別發佈者和訂閱者,訂閱者可以訂閱一個或者若干個頻道,而發佈者可以向指定的頻道發佈消息。所有訂閱此頻道的訂閱者都會受到此消息
發佈消息:
127.0.0.1:6379> PUBLISH newsChannel "good morning news report"
(integer) 0
暫時沒有訂閱者返回爲0
訂閱消息:
127.0.0.1:6379> SUBSCRIBE newsChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe" //subscribe 表示訂閱成功的反饋。第二個值是成功訂閱的頻道名,第三個值是當前客戶端訂閱的頻道數量。
如果是message 這個類型回覆是我們關心的,表示接收到的消息,第二個值表示產生消息的頻道名稱。第三個值是消息的內容。
unsubscribe 取消訂閱某個頻道,第二個值是對應的頻道名稱,第三個值是當前客戶端訂閱的頻道數量。
2) "newsChannel"
3) (integer) 1
利用publish 再次發佈消息:
127.0.0.1:6379> PUBLISH newsChannel "News 2"
(integer) 1
訂閱頻道:
127.0.0.1:6379> SUBSCRIBE newsChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "newsChannel"
3) (integer) 1
^[[A1) "message"
2) "newsChannel"
3) "News 2"
可以按照正則表達式訂閱多個頻道:
127.0.0.1:6379> PSUBSCRIBE news*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news*"
3) (integer) 1
PSUBSCRIBE去訂閱以news開頭任意字符結尾的頻道.
127.0.0.1:6379> PSUBSCRIBE news*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news*"
3) (integer) 1
1) "pmessage"
2) "news*"
3) "newsChannel"
4) "News 3"
Redis 事務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
深入理解Spring事務的傳播行爲
ゞ .邓澎波
2019-02-24 12:42:54
事務隔離級別
shixiazhoujun
2019-02-23 13:04:53
聲明式事務
liudajiang
2019-02-23 12:53:51
(MYSQL學習筆記4)事務的開啓、提交、回滾
w1sw
2019-02-23 00:33:03
QuickRedis 是一款 永久免費 的 Redis 可視化管理工具
zhoudian2010
2022-03-25 16:55:09
Redis主從複製以及主從複製原理
LoyaltyLu
2019-02-24 23:12:38
Redis | 001能做什麼?
Java貓說
2019-02-24 21:03:51
數據工程師妹子養成手記——數據庫篇
青南
2019-02-23 16:33:37
redis數據庫隨筆
simuls
2019-02-23 13:34:47
redis慢查詢日誌,php安裝redis擴展,redis存儲session,redis主從配置
13011150876
2019-02-23 00:41:11
redis慢查詢日誌,php安裝redis擴展,redis存儲session,redis主從配置
13011150876
2019-02-23 00:41:10
Redis 學習筆記
jasonhow
2019-02-23 00:39:36
Jedis連接池的使用
殺神之瘋子
2019-02-23 00:35:12
python 實現類似tweproxy 和codes的功能的redis代理功能
tianshuai369
2019-02-23 00:34:58
關於Mac安裝PHP相關擴展出現Zend/zend_config.h缺失的問題記錄
乄尐
2019-02-23 00:34:32