1. 程式人生 > >redis-cli 命令詳解

redis-cli 命令詳解

redis-cli命令使用

命令使用
redis-cli [OPTIONS] [cmd [arg [arg ...]]]
選項說明
  -h <hostname>      Server hostname (default: 127.0.0.1). ip地址
  -p <port>          Server port (default: 6379). 伺服器埠號
  -s <socket>        Server socket (overrides hostname and port).
  -a <password>      Password to use when connecting to the server. 密碼
  -u <uri>           Server URI. url格式的地址
  -r <repeat>        Execute specified command N times.
  -i <interval>      When -r is used, waits <interval> seconds per command.
                     It is possible to specify sub-second times like -i 0.1.
  -n <db>            Database number. 指定資料庫
  -x                 Read last argument from STDIN.
  -d <delimiter>     Multi-bulk delimiter in for raw formatting (default: \n).
  -c                 Enable cluster mode (follow -ASK and -MOVED redirections).
  --raw              Use raw formatting for replies (default when STDOUT is
                     not a tty).
  --no-raw           Force formatted output even when STDOUT is not a tty.
  --csv              Output in CSV format.
  --stat             Print rolling stats about server: mem, clients, ... 統計資料 連續輸出
  --latency          Enter a special mode continuously sampling latency.
                     If you use this mode in an interactive session it runs
                     forever displaying real-time stats. Otherwise if --raw or
                     --csv is specified, or if you redirect the output to a non
                     TTY, it samples the latency for 1 second (you can use
                     -i to change the interval), then produces a single output
                     and exits. 延時統計
  --latency-history  Like --latency but tracking latency changes over time.
                     Default time interval is 15 sec. Change it using -i.
  --latency-dist     Shows latency as a spectrum, requires xterm 256 colors.
                     Default time interval is 1 sec. Change it using -i.
  --lru-test <keys>  Simulate a cache workload with an 80-20 distribution.
  --replica          Simulate a replica showing commands received from the master.
  --rdb <filename>   Transfer an RDB dump from remote server to local file. 匯出rdb檔案
  --pipe             Transfer raw Redis protocol from stdin to server.
  管道模式
  --pipe-timeout <n> In --pipe mode, abort with error if after sending all data.
                     no reply is received within <n> seconds.
                     Default timeout: 30. Use 0 to wait forever.
                     管道超時
  --bigkeys          Sample Redis keys looking for big keys.
  --hotkeys          Sample Redis keys looking for hot keys.
                     only works when maxmemory-policy is *lfu.
  --scan             List all keys using the SCAN command.獲取伺服器所有的鍵
  --pattern <pat>    Useful with --scan to specify a SCAN pattern.
  正則表示式 用於scan命令中
  --intrinsic-latency <sec> Run a test to measure intrinsic system latency.
                     The test will run for the specified amount of seconds.
  --eval <file>      Send an EVAL command using the Lua script at <file>.
  --ldb              Used with --eval enable the Redis Lua debugger.
  --ldb-sync-mode    Like --ldb but uses the synchronous Lua debugger, in
                     this mode the server is blocked and script changes are
                     not rolled back from the server memory.
  --cluster <command> [args...] [opts...]
                     Cluster Manager command and arguments (see below).
  --verbose          Verbose mode.
  --no-auth-warning  Don't show warning message when using password on command
                     line interface.

注意:

  1. -u選項中url格式參考文件https://www.iana.org/assignments/uri-schemes/prov/redis 格式為:redis://user:[email protected]:6379/0?foo=bar&qux=baz
舉例:

例子1:

[email protected]:~# redis-cli
127.0.0.1:6379> set name hylaz
OK
127.0.0.1:6379> quit
[email protected]:~# redis-cli -h 127.0.0.1
127.0.0.1:6379> get name
"hylaz"
127.0.0.1:6379> quit
[email protected]
:~# redis-cli -h 127.0.0.1 -p 6379 127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> get age "20" 127.0.0.1:6379> quit [email protected]:~# redis-cli -h 127.0.0.1 -p 6379 -n 2 127.0.0.1:6379[2]> get age (nil) 127.0.0.1:6379[2]> set age 23 OK 127.0.0.1:6379[2]> get age "23" 127.0.0.1:6379[2]> quit

例子2:

server中統計選項

[email protected]:~# redis-cli --stat
------- data ------ --------------------- load -------------------- - child -
keys       mem      clients blocked requests            connections          
11         835.52K  1       0       12 (+0)             5           
11         835.52K  1       0       13 (+1)             5         
11         835.52K  1       0       14 (+1)             5           
11         835.52K  1       0       15 (+1)             5   

列表中選項說明:

選項 含義
keys server中key的數量
mem 鍵值對的總記憶體量
clients 當前連線的總clients數量
blocked 當前阻塞的客戶端數量
requests 伺服器請求總次數 (+1) 截止上次請求增加次數
connections 伺服器連線次數

使用info命令獲取伺服器的資訊

例子3:

匯入rdb檔案 命令:redis-cli --rdb rdb.log

[email protected]:~# redis-cli --rdb rdb.log
SYNC sent to master, writing 344 bytes to 'rdb.log'
Transfer finished with success.

該命令選項實現:

  1. 向server傳送SYNC命令,返回需要寫的總位元組數
  2. 從server讀取總位元組資料寫到指定檔案中

例子4:

找出各種資料型別的最大鍵值對 命令:redis-cli --big-keys

[email protected]:~# redis-cli --bigkeys

# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).

[00.00%] Biggest string found so far 'name1' with 5 bytes
[00.00%] Biggest set    found so far 'myset' with 1 members
[00.00%] Biggest string found so far 'key' with 6 bytes

-------- summary -------

Sampled 13 keys in the keyspace!
Total key length in bytes is 52 (avg len 4.00)

Biggest string found 'key' has 6 bytes
Biggest    set found 'myset' has 1 members

12 strings with 33 bytes (92.31% of keys, avg size 2.75)
0 lists with 0 items (00.00% of keys, avg size 0.00)
1 sets with 1 members (07.69% of keys, avg size 1.00)
0 hashs with 0 fields (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
0 streams with 0 entries (00.00% of keys, avg size 0.00)

該選項實現:通過使用scan命令遍歷server中的鍵值對,針對不同資料型別進行統計,

例子5:

找出server中熱點key 命令:redis-cli --hotkeys

# Scanning the entire keyspace to find hot keys as well as
# average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).

[00.00%] Hot key 'dd' found so far with counter 4
[00.00%] Hot key 'myset' found so far with counter 5
[00.00%] Hot key 'a' found so far with counter 5
[00.00%] Hot key 'dds' found so far with counter 4
[71.43%] Hot key 'aa' found so far with counter 4
[71.43%] Hot key 'key' found so far with counter 4

-------- summary -------

Sampled 14 keys in the keyspace!
hot key found with counter: 5   keyname: myset
hot key found with counter: 5   keyname: a
hot key found with counter: 4   keyname: dd
hot key found with counter: 4   keyname: dds
hot key found with counter: 4   keyname: aa
hot key found with counter: 4   keyname: key

選項實現:

  1. redis實現8種快取淘汰策略:

    voltile-lru:從已設定過期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰

    volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰

    volatile-random:從已設定過期時間的資料集(server.db[i].expires)中任意選擇資料淘汰

    volatile-lfu: 從已設定過期時間的資料集驅逐使用頻率最少的鍵

    allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰

    allkeys-lfu: 從所有鍵中驅逐使用頻率最少的鍵

    allkeys-random:從資料集(server.db[i].dict)中任意選擇資料淘汰

    no-enviction(驅逐):禁止驅逐資料 當記憶體不足以容納新寫入資料時,新寫入操作會報錯

    需要設定淘汰策略為lru或者lfu

2.命令實現使用scan命令遍歷所有的鍵值對,針對每個鍵值對使用OBJECT freq 獲取該鍵值對的資訊