- 上一篇文章中我們介紹了redis以及它的安裝和基本數(shù)據(jù)類型的使用,現(xiàn)在我們來學(xué)習(xí)下redis的幾個(gè)重要功能:訂閱、事務(wù)
訂閱
Redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息禽额,訂閱者(sub)接收消息。
Redis 客戶端可以訂閱任意數(shù)量的頻道。
客戶端可以訂閱某個(gè)頻道,一個(gè)頻道可以被多個(gè)客戶端訂閱
訂閱頻道(圖片摘自runoob.com)
當(dāng)往頻道發(fā)送信息的時(shí)候徽缚,該頻道的訂閱者就能收到信息
發(fā)布訂閱(圖片摘自runoob.com)
實(shí)例
- 訂閱頻道(不存在的話會(huì)創(chuàng)建)
martain@martaindeMacBook-Pro redis % src/redis-cli -p 6380
127.0.0.1:6380> SUBSCRIBE martain # 訂閱頻道 martain
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "martain"
3) (integer) 1
- 發(fā)送消息去頻道
martain@martaindeMBP redis % src/redis-cli -p 6380
127.0.0.1:6380> PUBLISH martain Hello # 往頻道m(xù)artain發(fā)送
(integer) 1
127.0.0.1:6380> PUBLISH martain GoodMorining
(integer) 1
127.0.0.1:6380>
- 收到頻道的數(shù)據(jù)
martain@martaindeMacBook-Pro redis % src/redis-cli -p 6380
127.0.0.1:6380> SUBSCRIBE martain
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "martain"
3) (integer) 1
1) "message"
2) "martain"
3) "Hello"
1) "message"
2) "martain"
3) "GoodMorining"
事務(wù)
Redis 事務(wù)可以一次執(zhí)行多個(gè)命令, 并且?guī)в幸韵氯齻€(gè)重要的保證:
批量操作在發(fā)送 EXEC 命令前被放入隊(duì)列緩存革屠。收到 EXEC 命令后進(jìn)入事務(wù)執(zhí)行凿试,事務(wù)中任意命令執(zhí)行失敗,其余的命令依然被執(zhí)行似芝。在事務(wù)執(zhí)行過程那婉,其他客戶端提交的命令請求不會(huì)插入到事務(wù)執(zhí)行命令序列中。
一個(gè)事務(wù)從開始到執(zhí)行會(huì)經(jīng)歷以下三個(gè)階段:
開始事務(wù)党瓮。
命令入隊(duì)详炬。
執(zhí)行事務(wù)。
實(shí)例
127.0.0.1:6380> MULTI # 開始事務(wù)
OK
127.0.0.1:6380> set front vue # 命令1
QUEUED
127.0.0.1:6380> SET backup java # 命令 2 ...
QUEUED
127.0.0.1:6380> SET database mysql
QUEUED
127.0.0.1:6380> GET front
QUEUED
127.0.0.1:6380> GET backup
QUEUED
127.0.0.1:6380> GET database
QUEUED
127.0.0.1:6380> EXEC # 執(zhí)行事務(wù)
1) OK
2) OK
3) OK
4) "vue"
5) "java"
6) "mysql"
127.0.0.1:6380>
事務(wù)開始之后寞奸,就可以編寫之前學(xué)的命令了痕寓,當(dāng)命令編寫完成之后可以使用EXEC執(zhí)行