文章目錄
- 前言
- 1. 連接 Redis 服務
- 2. 從其他程序獲取輸入
- 3. 連續執行相同的命令
- 4. CSV 輸出
- 5. 輸出幫助信息
- 6. 清空屏幕
- 7. 連續監控統計信息
- 8. 輸出大 key 報告
- 9. 監控 Redis 執行的命令
前言
redis-cli 是 Redis 自帶的命令行工具,是運維和開發人員常用的工具,本篇文章將介紹它的使用技巧和一些有趣的功能。
1. 連接 Redis 服務
redis-cli 默認連接的是 127.0.0.1 端口為 6379 的 Redis 服務,我們可以使用不同的選項,指定它連接到不同的主機或 IP 地址。
redis-cli -h 192.168.8.49 -p 6378 -a 'Redis123' -n 1
例如,上方命令,表示連接到 192.168.8.49 端口為 6378 密碼為 Redis123 編號為 1 的 Redis 數據庫。
2. 從其他程序獲取輸入
通過 redis-cli 執行一個文件中的命令,或者從 STDIN 中讀取最后一個參數,例如,要將 Redis 密鑰設置為本地文件系統中的net_services 文件內容:
redis-cli -a 'Redis123' -x SET net_services < /etc/services
下面演示從文件中讀取 Redis 命令:
$ cat commands.txt | redis-cli -a 'Redis123'
OK
(integer) 101
(integer) 6
"101xxx"
其中 commands.txt 的內容是:
SET item:3374 100
INCR item:3374
APPEND item:3374 xxx
GET item:3374
3. 連續執行相同的命令
可以執行單個命令,指定執行次數和時間間隔,例如,想要監控 INFO 中的某項指標,或者想要模型一些重復寫入。
該功能由兩個參數控制 -r <count>
控制執行的參數,如果為 -1 表示不限制次數, -i <delay>
為時間間隔,以秒為單位,0.1 表示為 100 毫秒,如果不指定該參數或者設置為 0 程序將盡快執行命令。
$ redis-cli -a 'Redis123' -r 5 -i 0.1 INCR counter_value
(integer) 10
(integer) 11
(integer) 12
(integer) 13
(integer) 14
例如,每隔 1 秒,打印出 RSS 內存大小:
$ redis-cli -a 'Redis123' -r 5 -i 1 INFO | grep rss_human
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
used_memory_rss_human:4.28M
4. CSV 輸出
將命令的結果,以 CSV 的格式進行輸出:
# 寫入列表
$ redis-cli -a 'Redis123' LPUSH mylist a b c d
(integer) 4
# 查詢
$ redis-cli -a 'Redis123' LRANGE mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
# 以 csv 格式輸出
$ redis-cli -a 'Redis123' --csv LRANGE mylist 0 -1
"d","c","b","a"
請注意,該 --csv 標志僅適用于單個命令,而不適用于導出的整個數據庫。
5. 輸出幫助信息
查看命令的用法,內容覆蓋 Redis 大部分的命令,有兩種用法,第一種是 HELP @ 顯示有關給定類別的所有命令。類別有:
- @generic
- @string
- @list
- @set
- @sorted_set
- @hash
- @pubsub
- @transactions
- @connection
- @server
- @scripting
- @hyperloglog
- @cluster
- @geo
- @stream
第二種方式,是 HELP 顯示作為參數給出的命令的具體幫助。
127.0.0.1:6379> HELP keysKEYS patternsummary: Find all keys matching the given patternsince: 1.0.0group: generic
6. 清空屏幕
在交互模式下使用該 CLEAR 命令會清除終端的屏幕。
clear
7. 連續監控統計信息
redis-cli 連續統計模式可能是實時監控 Redis 實例的鮮為人知但非常有用的功能之一。要啟用此模式,–stat 請使用該選項。
redis-cli -a 'Redis123' --stat
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
128325 1.04G 71 0 92694486 (+0) 1795659
128323 1.04G 71 0 92694500 (+14) 1795664
128322 1.04G 71 0 92694506 (+6) 1795664
128324 1.04G 71 0 92694556 (+50) 1795664
128322 1.04G 71 0 92694571 (+15) 1795664
128321 1.04G 71 0 92694576 (+5) 1795664
128321 1.04G 71 0 92694581 (+5) 1795664
128321 1.04G 71 0 92694595 (+14) 1795669
- keys:表示當前 key 的總數量。
- mem:表示當前 Redis 內存使用量。
- clients:表示當前連接客戶端的數量。
- blocked:表示當前堵塞客戶端數量。
- requests:QPS 總數(新增的數量)
- connections:服務器連接的總次數。
在這種情況下,該 -i <interval>
選項用作為監控時間間隔。默認值為 1 秒。
8. 輸出大 key 報告
$ redis-cli --bigkeys# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type. You can use -i 0.01 to sleep 0.01 sec
# per SCAN command (not usually needed).[00.00%] Biggest string found so far 'key-419' with 3 bytes
[05.14%] Biggest list found so far 'mylist' with 100004 items
[35.77%] Biggest string found so far 'counter:__rand_int__' with 6 bytes
[73.91%] Biggest hash found so far 'myobject' with 3 fields-------- summary -------Sampled 506 keys in the keyspace!
Total key length in bytes is 3452 (avg len 6.82)Biggest string found 'counter:__rand_int__' has 6 bytes
Biggest list found 'mylist' has 100004 items
Biggest hash found 'myobject' has 3 fields504 strings with 1403 bytes (99.60% of keys, avg size 2.78)
1 lists with 100004 items (00.20% of keys, avg size 100004.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
1 hashs with 3 fields (00.20% of keys, avg size 3.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
9. 監控 Redis 執行的命令
監控 Redis 接收到的所有命令,輸出到終端。
redis-cli -a 'Redis123' MONITOR
1460100081.165665 [0 127.0.0.1:51706] "set" "shipment:8000736522714:status" "sorting"
1460100083.053365 [0 127.0.0.1:51707] "get" "shipment:8000736522714:status"
可以通過管道傳輸輸出,因此可以使用諸如 grep 的命令。