Redis cli

12/18/2021 Redis

# 一:参数说明

用法:

## 例如:redis-cli -h {host} -p {port}
redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"

## 例如:redis-cli -h {host} -p {port} {command}
redis-cli -h 127.0.0.1 -p 6379 get hello
"world"
1
2
3
4
5
6
7
8
9
10

-h(host):地址,默认连接127.0.0.1 -p(port):端口,默认6379 -r(repeat):将命令执行多次 -i(interval):代表每隔几秒执行一次命令 ;必须和-r选项一起使用 -x:从标准输入(stdin)读取数据作为redis-cli的最后一个参数 -c(cluster):连接Redis Cluster节点时需要使用的,-c 选项可以防止moved和ask异常 -a(auth):密码选项 --scan和--pattern:用于扫描指定模式的键,相当于使用 scan 命令 --slave:把当前客户端模拟成当前Redis节点的从节点,可以用来获取当前Redis节点的更新操作。合理的利用这个选项可以记录当前连接Redis节点的一些更新操作,这些更新操作很可能是实际开发业务时需要的数据 --rdb:请求Redis实例生成并发送RDB持久化文件,保存在本地。可使用它做持久化文件的定期备份 --pipe:用于将命令封装成Redis通信协议定义的数据格式,批量发送给Redis执行 --bigkeys:使用scan命令对Redis的键进行采样,从中找到内存占用比 较大的键值,这些键可能是系统的瓶颈 --eval:用于执行指定Lua脚本 --latency:有三个选项,分别是--latency、--latency-history、--latency-dist。它们都可以检测网络延迟 --stat:可以实时获取Redis的重要统计信息,虽然info命令中的统计信息更全,但是能实时看到一些增量的数据(例如request) --raw和--no-raw:要求命令的返回结果必须是原始的格式,--raw恰恰相反,返回格式化后的结果。

## -r
### 执行三次ping命令
> redis-cli -r 3 ping
PONG
PONG
PONG

## -i -r
### 每隔1秒执行一次ping命令,共执行5次
> redis-cli -r 5 -i 0.01 ping
PONG
PONG
PONG
PONG
PONG
### 每隔1秒输出内存的使用量,一共输出100次
> redis-cli -r 100 -i 1 info | grep used_memory_human
used_memory_human:2.95G
used_memory_human:2.95G
... ...
used_memory_human:2.95G

## -x
### 将字符串world作为set hello的值
> echo "world" | redis-cli -x set hello
OK

## --slave参数使用
### 第一个客户端
> redis-cli --slave
SYNC with master, discarding 72 bytes of bulk transfer...
SYNC done. Logging commands from master.
### 第二个客户端做一些更新操作
> redis-cli
redis-cli
127.0.0.1:6379> set hello world 
OK
127.0.0.1:6379> set a b 
OK
127.0.0.1:6379> incr count 
1
127.0.0.1:6379> get hello 
"world"
### 第一个客户端,PING命令是由于主从复制产生的
redis-cli --slave 
SYNC with master, discarding 72 bytes of bulk transfer... 
SYNC done. Logging commands from master. 
"PING" 
"PING" 
"PING" 
"PING" 
"PING" 
"SELECT","0" 
"set","hello","world" 
"set","a","b" 
"PING" 
"incr","count"

## --pipe
> echo -en '*3\r\n$3\r\nSET\r\n$5\r\nhello\r\n$5\r\nworld\r\n*2\r\n$4\r\nincr\r\n$7\r\ncounter\r\n' | redis-cli --pipe

## --latency
### 执行结果只有一条
### 客户端B和Redis在机房B,客户端A在机房A,机房A和机房B是跨地区的:
### 客户端B
> redis-cli -h {machineB} --latency
min: 0, max: 1, avg: 0.07 (4211 samples)
### 客户端A
> redis-cli -h {machineB} --latency 
min: 0, max: 2, avg: 1.04 (2096 samples)
### 可以看出客户端A由于距离Redis比较远,平均网络延迟会稍微高一些

## --latency-history
### 以分时段的形式了解延迟信息
redis-cli -h 10.10.xx.xx --latency-history 
min: 0, max: 1, avg: 0.28 (1330 samples) -- 15.01 seconds range… min: 0, 
max: 1, avg: 0.05 (1364 samples) -- 15.01 seconds range

## --latency-dist
### 使用统计图表的形式从控制台输出延迟统计信息

## --state
> redis-cli --stat
------- data ------ --------------------- load -------------------- - child - 
keys    mem   clients blocked requests           connections 
2451959 3.43G 1162    0       7426132839 (+0)    1337356 
2451958 3.42G 1162    0       7426133645 (+806)  13373562452182 3.43G 1161    0       7426150275 (+1303) 1337356

## --raw
> redis-cli set hello "你好" 
OK
### 如果正常执行get或者使用--no-raw选项,那么返回的结果是二进制格式:
> redis-cli get hello 
"\xe4\xbd\xa0\xe5\xa5\xbd" 
> redis-cli --no-raw get hello 
"\xe4\xbd\xa0\xe5\xa5\xbd"
### 如果使用--raw将返回中文
> redis-cli --raw get hello
你好
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

# 二:参考文献

最后更新: 12/19/2021, 9:00:18 PM