1. 程式人生 > >【Redis資料庫】命令學習筆記——釋出訂閱、事務、指令碼、連線命令彙總

【Redis資料庫】命令學習筆記——釋出訂閱、事務、指令碼、連線命令彙總

本篇基於redis 4.0.11版本,學習釋出訂閱、事務、指令碼、連線的相關命令。

Redis 釋出訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。

序號 命令 描述 事例 結果
1 SUBSCRIBE channel [channel ...]  訂閱給定的一個或多個頻道的資訊。 建立了訂閱頻道名為redisChat:SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1
2 PUBLISH channel message  將資訊傳送到指定的頻道。 將haha釋出到mychannel渠道:publish mychannel haha 本視窗:"2"   --返回訂閱數量 訂閱視窗:1)  "message"  2)  "mychannel"  3)  "haha"
3 PSUBSCRIBE pattern [pattern ...]  訂閱一個或多個符合給定模式的頻道。 訂閱my開頭模式的頻道:PSUBSCRIBE my* Reading messages... (press Ctrl-C to quit) 1) "psubscribe"  # 返回值的型別:顯示訂閱成功 2) "my*"   # 訂閱的模式 3) (integer) 1   # 目前已訂閱的模式的數量 ---------------------- 1) "pmessage"  # 返回值的型別:資訊 2) "my*"   # 資訊匹配的模式 3) "mychannel"  # 資訊本身的目標頻道 4) "haha"   # 資訊的內容  
4 PUBSUB subcommand [argument [argument ...]]  檢視訂閱與釋出系統狀態。 列印所有活躍頻道:PUBSUB CHANNELS 訂閱者數量:PUBSUB NUMSUB mychannel 1) "mychannel" 2) "redisChat" --------------- 1) "mychannel" 2) (integer) 1
5 UNSUBSCRIBE [channel [channel ...]]  指退訂給定的頻道。
6 PUNSUBSCRIBE [pattern [pattern ...]] 
退訂所有給定模式的頻道。

Redis 事務可以一次執行多個命令,收到 EXEC 命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然被執行,在事務執行過程,其他客戶端提交的命令請求不會插入到事務執行命令序列中

序號 命令 描述 事例 結果
1 DISCARD  取消事務,放棄執行事務塊內的所有命令。 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> SET greeting "hello" QUEUED 127.0.0.1:6379> DISCARD OK
2 MULTI  標記一個事務塊的開始。 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days" QUEUED 127.0.0.1:6379> GET book-name QUEUED 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series" QUEUED 127.0.0.1:6379> SMEMBERS tag QUEUED 127.0.0.1:6379> EXEC 1) OK 2) "Mastering C++ in 21 days" 3) (integer) 3 4) 1) "Programming"    2) "C++"    3) "Mastering Series"
3 EXEC  執行所有事務塊內的命令。
4 WATCH key [key ...]  監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。 WATCH lock lock_times ok
5 UNWATCH  取消 WATCH 命令對所有 key 的監視。 UNWATCH ok

Redis 指令碼使用 Lua 直譯器來執行指令碼。 Redis 2.6 版本通過內嵌支援 Lua 環境。執行指令碼的常用命令為 EVAL

序號 命令 描述 事例 結果
1 EVAL script numkeys key [key ...] arg [arg ...] 執行 Lua 指令碼 eval "return {KEYS[1],KEYS[2],KEYS[3],ARGV[1]}" 3 key1 key2 first second 1) "key1" 2) "key2" 3) "first" 4) "second"
2 EVALSHA sha1 numkeys key [key ...] arg [arg ...] 執行 Lua 指令碼
3 SCRIPT EXISTS script [script ...] 檢視指定的指令碼是否已經被儲存在快取當中 SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a 1) (integer) 1
4 SCRIPT FLUSH 從指令碼快取中移除所有指令碼
5 SCRIPT KILL 殺死當前正在執行的 Lua 指令碼
6 SCRIPT LOAD script 將指令碼 script 新增到指令碼快取中,但並不立即執行這個指令碼 SCRIPT LOAD "return 'hello moto'"

"232fd51614574cf0867

b83d384a5e898cfd24e5a"

連線 redis 服務命令:

序號 命令 描述 事例 結果
1

AUTH password 

驗證密碼是否正確
2

ECHO message 

列印字串 ECHO HAHA "HAHA"
3

PING 

檢視服務是否執行 PING  PONG # 客戶端和伺服器連線正常
4

QUIT 

關閉當前連線
5

SELECT index 

切換到指定的資料庫 SELECT 2  OK

下一篇:JAVA呼叫redis