0x001 互動模式
到目前為止,我們探索瞭如何像使用命令列程式一樣使用redis-cli
。這種方式在使用指令碼或者測試的時候的確是一種好的方式,但是大多數人大多使用的是互動模式
使用者在互動模式中,使用者在提示符的幫助下輸入Redis
命令。命令將會傳送到服務端,執行完成之後將會返回並渲染為簡單的可閱讀性好的輸出。
在互動模式中,不需要有什麼特別的輸入–只需要啟動它並且不新增任何引數:
$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
是提示符,它提示你你已經連線到了Redis
例項
提示符將會在你的連線發生變化的時候改變,或者你選擇操作不是0
號資料庫的時候:
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> dbsize
(integer) 1
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> dbsize
(integer) 503
0x002 處理連線和重新連線
在互動模式中使用連線命令並指定hostname
和port
可以實現連線到其他例項:
127.0.0.1:6379> connect metal 6379
metal:6379> ping
PONG
你可以看到提示符相應的改變了。如果使用者嘗試連線一個不可達的例項,redis-cli
將會進入不可連線模式並在每次輸入新的命令的時候重新嘗試連線一次。
127.0.0.1:6379> connect 127.0.0.1 9999
Could not connect to Redis at 127.0.0.1:9999: Connection refused
not connected> ping
Could not connect to Redis at 127.0.0.1:9999: Connection refused
not connected> ping
Could not connect to Redis at 127.0.0.1:9999: Connection refused
通常情況下,如果一個連線失敗了,redis-cli
總會在後臺嘗試重新連線:如果嘗試連線失敗了,它將會顯示錯誤並進入不可連線狀態。下面是例子:
127.0.0.1:6379> debug restart
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> ping
PONG
127.0.0.1:6379> (now we are connected again)
當重新連線成功了,redis-cli
自動重新選擇最新的資料庫。然而,其他的狀態將會丟失,比如我們正在執行的事務:
$ redis-cli
127.0.0.1:6379> multi
OK
127.0.0.1:6379> ping
QUEUED
( 此時`redis-server正好在重啟` )
127.0.0.1:6379> exec
(error) ERR EXEC without MULTI
在互動模式中測試不是議題,但是你必須知道這種模式的侷限性。
0x003 編輯,歷史和自動完成
因為redis-cli
使用了linenoise line editing library,所以他具有命令列自動提示和完成能力,並沒有依賴libreadline
或者其他可選的庫
為了防止一次又一次的輸入重複的命令,你可以按↑
、↓
箭頭來獲取到已經執行過的歷史命令。歷史命令在重啟redis-cli
的時候將會消失,它儲存在.rediscli_history
檔案中,該檔案位於使用者的home
資料夾,並定義在環境變數中。可以通過設定REDISCLI_HISTFILE
環境變數來設定其他的檔案,如果要禁用它,請設定到/dev/null
。
通過TAB
鍵,redis-cli
也可以做到命令名的自動完成:
127.0.0.1:6379> Z<TAB>
127.0.0.1:6379> ZADD<TAB>
127.0.0.1:6379> ZCARD<TAB>
0x004 重複執行相同命令
通過在命令前面新增數字字首來重複執行命令:
127.0.0.1:6379> 5 incr mycounter
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
0x005 顯示命令幫助
Redis
有很多的命令,當你測試的時候,如果你忘記了引數的準確順序,redis-cli
通過help
為絕大多數的Redis
命令提供了線上的幫助。使用help
命令有兩種形式:
-
help @<category>
: 顯示某個分類的所有命令. 這些分類包括: @generic, @list, @set, @sorted_set, @hash, @pubsub, @transactions, @connection, @server, @scripting, @hyperloglog. -
help <commandname>
:顯示引數中所給命令的幫助
比如獲取PFADD
命令的幫助:
PFADD key element [element ...]
summary: Adds the specified elements to the specified HyperLogLog.
since: 2.8.9
group: hyperloglog
help
命令同樣支援TAB
來自動完成
0x006 清理終端螢幕
在互動模式中使用clear
命令可以清理終端的螢幕