Redis深入系列-0x011:redis-cli–Redis命令列介面(中)

followWinter發表於2018-05-21

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 處理連線和重新連線

在互動模式中使用連線命令並指定hostnameport可以實現連線到其他例項:

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命令可以清理終端的螢幕

相關文章