redis-cli 是Redis的客戶端命令行界面
- 它對(duì)命令大小寫不敏感,如: ping竣蹦、Ping橄霉、PING是同一個(gè)命令
- 但是對(duì)變量大小寫敏感,A沪曙、a是兩個(gè)變量
它主要有兩種模式:
- 一種是交互模式奕污,用戶可以在其中鍵入命令并獲得回復(fù);
- 另一種模式是通過redis-cli發(fā)送命令液走,然后打印在標(biāo)準(zhǔn)輸出上
redis-cli未指定主機(jī)和端口時(shí)碳默,默認(rèn)連接127.0.0.1 端口 6379 的服務(wù)實(shí)例。
參數(shù) | 解釋 |
---|---|
-h | 主機(jī) |
-p | 端口 |
-a | 密碼, 后者后續(xù)通過auth來顯示認(rèn)證 |
-n | 指定數(shù)據(jù)庫(kù)0~15 |
例子:
$ redis-cli -h 127:0:0:1 -p 6379 -a root ping
PONG
一缘眶、交互模式
啟動(dòng)
$ redis-cli
127.0.0.1:6379> ping
PONG
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) 50
處理連接和重新連接 connect
connect通過指定我們要連接的主機(jī)名和端口嘱根,在交互模式下使用該命令可以連接到不同的實(shí)例:
127.0.0.1:6379> connect baobao 6379
baobao:6379> ping
PONG
重復(fù)運(yùn)行命令
通過在命令名稱前加上一個(gè)數(shù)字,可以多次運(yùn)行相同的命令:
127.0.0.1:6379> 5 incr foo
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
清屏 clear
二巷懈、命令行模式
重復(fù)運(yùn)行 -r
可以在用戶選擇的兩次執(zhí)行之間暫停的情況下该抒,將同一命令執(zhí)行指定的次數(shù)
參數(shù) | 解釋 |
---|---|
-r | 運(yùn)行命令的次數(shù), 若想一直重復(fù)則使用-1 |
-i | 運(yùn)行間隔, 單位是秒,如果想使用毫秒顶燕,可以用 -i 0.001 |
例1:對(duì)foo自增5次
$ redis-cli -r 5 incr foo
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
例2:每隔1秒執(zhí)行一次ping,執(zhí)行5次
$ redis-cli -r 5 -i 1 ping
PONG
PONG
PONG
PONG
PONG
例3: 每隔1秒打印一次 RSS 內(nèi)存大小
$ redis-cli -r -1 -i 1 INFO | grep rss_human
used_memory_rss_human:1.38M
used_memory_rss_human:1.38M
used_memory_rss_human:1.38M
CSV 輸出 --csv
有時(shí)您可能希望使用redis-cli以快速將數(shù)據(jù)從 Redis 導(dǎo)出到外部程序凑保。這可以使用 CSV(逗號(hào)分隔值)輸出功能來完成:
$ redis-cli lpush mylist a b c d
(integer) 4
$ redis-cli --csv lrange mylist 0 -1
"d","c","b","a"
目前不可能像那樣導(dǎo)出整個(gè)數(shù)據(jù)庫(kù),而只能運(yùn)行帶有 CSV 輸出的單個(gè)命令割岛。
從其他程序獲取輸入 -x
–x表示從標(biāo)準(zhǔn)輸入(stdin)讀取數(shù)據(jù)作為redis-cli的最后一個(gè)參數(shù)愉适,一般與管道符在一起使用。
例如:
$ echo dbsize|redis-cli -x
(integer) 14
$ echo world|redis-cli -n 14 -x set hello
OK
$ redis-cli -x set foo < /etc/services
OK
批量執(zhí)行命令 –-pipe
-–pipe 用于將命令封裝成Redis通信協(xié)議定義的數(shù)據(jù)格式癣漆,批量發(fā)送給Redis執(zhí)行维咸。
命令格式如下
cat redis.txt | redis-cli -h 127.0.0.1 -a password - p 6379 --pipe
其中redis.txt 格式為
set myname baobao
set yourname popo
注意導(dǎo)入前需要進(jìn)行文件格式轉(zhuǎn)碼
unix2dos redis.txt
顯示格式 --raw和--no-raw
--no-raw是要求命令的返回結(jié)果必須是原始的格式,--raw恰恰相反惠爽,返回格式化后的結(jié)果癌蓖。
在Redis中設(shè)置一個(gè)鍵,如果用get或–no-row選項(xiàng)婚肆,那么返回的結(jié)果是二進(jìn)制格式:
[root@Redis ~]# redis-cli set hello "你好"
OK
[root@Redis ~]# redis-cli get hello
"\xe4\xbd\xa0\xe5\xa5\xbd"
[root@Redis ~]# redis-cli --no-raw get hello
"\xe4\xbd\xa0\xe5\xa5\xbd"
如果使用--raw選項(xiàng)租副,就會(huì)返回中文:
[root@Redis ~]# redis-cli --raw get hello
你好
運(yùn)行Lua腳本 --eval
$ cat /tmp/script.lua
return redis.call('set',KEYS[1],ARGV[1])
$ redis-cli --eval /tmp/script.lua foo , bar
OK
掃描指定模式的鍵 –-scan
當(dāng)數(shù)據(jù)集發(fā)生變化,可能會(huì)多次報(bào)告鍵较性,但如果自迭代開始以來該鍵就存在用僧,則不會(huì)丟失任何鍵
$ redis-cli --scan | head -4
key-419
key-71
key-236
key-50
請(qǐng)注意结胀,head -10用于打印輸出的第一行。
掃描能夠使用帶有選項(xiàng)的SCAN命令的底層模式匹配功能–-pattern责循。
$ redis-cli --scan --pattern '*-11*'
key-115
key-114
key-113
key-112
key-111
配合wc
可統(tǒng)計(jì)特定種類的key個(gè)數(shù):
$ redis-cli --scan --pattern 'user:*' | wc -l
三糟港、發(fā)布/訂閱模式
redis-cli只需使用 PUBLISH
命令就可以在Redis發(fā)布/訂閱通道中發(fā)布消息, 通過 SUBSCRIBE
或PUBLISH
進(jìn)行訂閱。
$ redis-cli psubscribe bao-*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "bao-*"
3) (integer) 1
在閱讀郵件消息顯示院仿,我們進(jìn)入的Pub / Sub模式秸抚。當(dāng)另一個(gè)客戶端在某個(gè)通道中發(fā)布某些消息時(shí)(例如redis-cli PUBLISH bao-1 hello
),發(fā)布/訂閱模式下的CLI將顯示以下內(nèi)容:
1) "pmessage"
2) "bao-*"
3) "bao-1"
4) "hello"
更多功能 --hep
$ redis-cli --help
若想進(jìn)行服務(wù)監(jiān)控, 可查看我另一篇博客: redis 服務(wù)監(jiān)控