介绍
redis-cli是Redis命令行界面,一个简单的程序,允许向 Redis 发送命令,然后从服务端读取发送的回复。
Redis对命令的大小写不区分,比如ping、Ping是同一个命令。
Redis对key名的大小写区分。
两种模式
- 交互模式:在redis-cli里面使用
- 另一种模式:在命令前面带上redis-cli的方式
基本使用
1、连接到Redis
- -h 用于指定 ip
- -p 用于指定端口
- -a 用于指定认证密码
D:\work\redis>redis-cli -p 6379 -h 127.0.0.1
127.0.0.1:6379> ping
PONG
输入ping ,返回PONG,表示已成功连接上Redis,并且默认连接的是Redis的0库。
2、基本操作
127.0.0.1:6379> set a a
OK
回复的Ok,说明这条命令已经执行,Redis回复是类型化的(他们可以是字符串、数组、数字、错误、nil)
3、将回复输出到文件
D:\work\redis>redis-cli incrby key 1 >out.txt
使用该命令之后,回复不会输出到终端
4、–raw和–no-raw
D:\work\redis>redis-cli --raw incr key
1
D:\work\redis>redis-cli incr key
(integer) 2
从上面得知,使用–raw之后可以隐藏对应的数据类型,–no-raw和–raw作用相同。
5、连续运行相同的命令
可以同时运行多次命令,并指定延迟时间
-
-r :运行命令的次数
-
-i
每隔几秒运行一次命令。
默认情况下,间隔(或延迟)设置为 0,因此命令会尽快执行
注意:-i的单位是秒,不支持毫秒,如果想每隔10毫秒执行一次,可以用-i 0.01
示例:对key执行五次
D:\work\redis>redis-cli -r 5 incr key
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
注意:不能在redis-cli里面使用,只能在redis-cli当前目录下使用
示例:每隔1秒执行一次,执行五次
D:\work\redis>redis-cli -r 5 -i 1 incr key
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
在redis-cli里面运行相同的命令N次
127.0.0.1:6379> 3 incr key
(integer) 1
(integer) 2
(integer) 3
如果要永远运行相同的命令请使用-1作为 count。因此,为了随时间监控 RSS 内存大小,可以使用如下命令:
$ 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
... a new line will be printed each second ...
注意:只有在linux才能用
6、输出csv格式
D:\work\redis>redis-cli lpush mylist a b c d
(integer) 4
D:\work\redis>redis-cli --csv lrange mylist 0 -1
"d","c","b","a"
其实就是把竖着的格式改成了横的格式,然后用逗号分开。
7、从其他文件获取内容
以下示例可以将1.txt的内容设置给foo
D:\work\redis>redis-cli -x set foo < 1.txt
OK
交互模式无法使用
交互模式
在交互模式下,用户在提示符下键入 Redis 命令。命令被发送到服务器,进行处理,回复被解析并呈现为更简单的形式以供阅读。
1、启动
双击redis-cli.exe就行
127.0.0.1:6379>
字符串127.0.0.1:6379>是提示,代表已经连接上了
当连接的服务器发生变化时,提示会发生变化,比如我们选择连接到2库
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]>
发现后面多了个[2],说明我们现在处于2库。
2、处理连接和重新连接
在交互模式下连接到其他实例
127.0.0.1:6379> connect localhost 6378
localhost:6378> ping
PONG
重新连接
localhost:6378> ping
Could not connect to Redis at localhost:6378: 由于目标计算机积极拒绝,无法连接。
(2.00s)
not connected> debug restart #重新连接的命令
(error) ERR failed to restart the server. Check server logs.
localhost:6378> ping
PONG
3、显示有关Redis命令的帮助
Redis有很多命令,有时候,可能不记得参数的顺序redis-cli
使用命令为大多数 Redis 命令提供在线帮助help
。该命令可以以两种形式使用:
- help @显示有关给定类别的所有命令,类别为@generic
,
@list,
@set,
@sorted_set,
@hash,
@pubsub,
@transactions,
@connection,
@server,
@scripting,
@hyperloglog - help 显示作为参数给出的命令的帮助
例:显示@hash的所有命令
127.0.0.1:6379> help @hash
HDEL key field [field ...] #语法
summary: Delete one or more hash fields #作用
since: 2.0.0 #起始版本
例:显示set的帮助
127.0.0.1:6379> help set
SET key value [expiration EX seconds|PX milliseconds] [NX|XX] #语法
summary: Set the string value of a key #作用
since: 1.0.0 #起始版本
group: string #属于string组
4、编辑、历史和完成
- 因为
redis-cli
使用 linenoise 线编辑库,所以它始终具有线编辑功能,无需依赖libreadline
或其他可选库。 - 可以按箭头键(向上和向下)访问已执行命令历史记录,以避免重复输入。历史记录在 CLI 重新启动之间保存在
.rediscli_history
用户主目录内的一个文件中,由HOME
环境变量指定。可以通过设置环境变量来使用不同的历史文件名REDISCLI_HISTFILE
,并通过将其设置为/dev/null
. - 还可以通过按 TAB 键来完成命令补全。
5、清除终端屏幕
- linux 使用clear
- windows使用cls
6、运行相同的命令 N 次
通过在命令名称前加上一个数字,可以多次运行相同的命令
127.0.0.1:6379> 5 incr mycounter
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
特殊操作模式
1、-x
将echo后面的内容放到redis-cli的最后一个参数,一般与管道一起使用。比如下面的world 就会当hello的值
D:\work\redis>echo world|redis-cli -x set hello
OK
注:交互模式无法使用
2、–stat:连续统计模式
–stat选项可以实时获取redis的重要统计信息,虽然info命令中的统计信息更全,但是能实时看到一些增量的数据对redis的运维还是有一些帮助的
D:\work\redis>redis-cli --stat
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
9 747.54K 3 0 708 (+0) 26
9 747.54K 3 0 709 (+1) 26
9 747.54K 3 0 710 (+1) 26
9 747.54K 3 0 711 (+1) 26
选项 | 说明 |
---|---|
keys | 总共有多少个key |
mem | 键值对的总内存 |
clients | 当前连接的总clients数量 |
blocked | 当前阻塞的clients数量 |
requests | 服务器请求总次数(+1)截止上次请求增加次数 |
connections | 服务器连接次数 |
- 交互模式无法使用
- 默认一秒钟打印一次,如果想要指定几秒钟打印一次,在后面加-i 就行。比如redis-cli --stat -i 3
3、–bigkeys:扫描大key
–bigkeys选项使用scan命令对redis的键进行采样,从中找到内存占用较大的键值,这些键可能是系统的瓶颈
D:\work\redis>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 'aaa' with 1 bytes
[00.00%] Biggest string found so far 'mykey' with 19 bytes
-------- summary -------
Sampled 9 keys in the keyspace!
Total key length in bytes is 34 (avg len 3.78)
Biggest string found 'mykey' has 19 bytes
0 lists with 0 items (00.00% of keys, avg size 0.00)
0 hashs with 0 fields (00.00% of keys, avg size 0.00)
9 strings with 33 bytes (100.00% of keys, avg size 3.67) #9个字符串的key占用了33个字节
0 streams with 0 entries (00.00% of keys, avg size 0.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
4、–scan:扫描指定模式的key
- 此模式与该–bigkeys选项一样,使用SCAN命令
- 因此如果数据集发生变化,可能会多次报告键,但如果自迭代开始以来该键就存在,则不会丢失任何键
$ redis-cli --scan | head -10
key-419
key-71
key-236
key-50
key-38
key-458
key-453
key-499
key-446
key-371
注:head只在linux 才能使用:
扫描指定内容的key,比如扫描以k开头的key
D:\work\redis>redis-cli --scan --pattern *k*
key
key1
k2
key11
通过命令管道输出
wc
可用于按键名计算特定类型的对象:
$ redis-cli --scan --pattern 'user:*' | wc -l
3829433
wc命令只能用在linux
5、发布订阅模式
127.0.0.1:6379>psubscribe '*'
Reading messages... (press Ctrl-C to quit) #按ctrl+c退出
1) "psubscribe"
2) "'*'"
3) (integer) 1
再开一个客户端输入PUBLISH mychannel mymessage
发现这边客户端输出以下内容
1) "pmessage"
2) "*"
3) "mychannel"
4) "mymessage
6、监控Redis中执行的命令
先开a客户端,然后输入monitor
127.0.0.1:6379> monitor
OK
然后开b客户端输入 set a b
127.0.0.1:6379> set a a
OK
a客户端输出以下内容
1652974013.891489 [0 127.0.0.1:61936] "set" "a" "a"
7、监控Redis延迟
D:\work\Redis>redis-cli --latency
min: 0, max: 1,avg: 0.16 (2590 samples)-
或者
redis-cli --latency-history
延迟测量
D:\work\Redis>redis-cli --intrinsic-latency 5
Max latency so far: 1 microseconds.
Max latency so far: 2 microseconds.
Max latency so far: 3 microseconds.
Max latency so far: 5 microseconds.
Max latency so far: 8 microseconds.
Max latency so far: 14 microseconds.
Max latency so far: 15 microseconds.
Max latency so far: 24 microseconds.
Max latency so far: 78 microseconds.
127158764 total runs (avg latency: 0.0393 microseconds / 39.32 nanoseconds per run).
Worst run took 1984x longer than the average latency.
8、备份rdb
D:\work\Redis>redis-cli --rdb 1.rdb
SYNC sent to master, writing 175 bytes to '1.rdb'
Transfer finished with success.
9、从机模式
CLI 的从属模式是对 Redis 开发人员和调试操作有用的高级功能。它允许检查主服务器在复制流中向其从服务器发送的内容,以便将写入传播到其副本。选项名称很简单--slave
。这是它的工作原理:
D:\work\Redis>redis-cli --slave
SYNC with master, discarding 175 bytes of bulk transfer...
SYNC done. Logging commands from master.
该命令首先丢弃第一次同步的 RDB 文件,然后以 CSV 格式记录收到的每个命令。
如果您认为某些命令未在您的从属服务器中正确复制,这是检查正在发生的事情的好方法,也是改进错误报告的有用信息。
10、执行 LRU 模拟
D:\work\Redis>redis-cli --lru-test 10000000
174250 Gets/sec | Hits: 1233 (0.71%) | Misses: 173017 (99.29%)
169250 Gets/sec | Hits: 3612 (2.13%) | Misses: 165638 (97.87%)
177250 Gets/sec | Hits: 6228 (3.51%) | Misses: 171022 (96.49%)
160750 Gets/sec | Hits: 7653 (4.76%) | Misses: 153097 (95.24%)
177500 Gets/sec | Hits: 10675 (6.01%) | Misses: 166825 (93.99%)
176250 Gets/sec | Hits: 13056 (7.41%) | Misses: 163194 (92.59%)
152250 Gets/sec | Hits: 13234 (8.69%) | Misses: 139016 (91.31%)
166000 Gets/sec | Hits: 16325 (9.83%) | Misses: 149675 (90.17%)
176500 Gets/sec | Hits: 19652 (11.13%) | Misses: 156848 (88.87%)
174500 Gets/sec | Hits: 21591 (12.37%) | Misses: 152909 (87.63%)
175500 Gets/sec | Hits: 23622 (13.46%) | Misses: 151878 (86.54%)
174250 Gets/sec | Hits: 25500 (14.63%) | Misses: 148750 (85.37%)
174000 Gets/sec | Hits: 27484 (15.80%) | Misses: 146516 (84.20%)
152500 Gets/sec | Hits: 25855 (16.95%) | Misses: 126645 (83.05%)
141000 Gets/sec | Hits: 25398 (18.01%) | Misses: 115602 (81.99%)
156000 Gets/sec | Hits: 29603 (18.98%) | Misses: 126397 (81.02%)
172500 Gets/sec | Hits: 34219 (19.84%) | Misses: 138281 (80.16%)
173000 Gets/sec | Hits: 35966 (20.79%) | Misses: 137034 (79.21%)
173250 Gets/sec | Hits: 38275 (22.09%) | Misses: 134975 (77.91%)