介绍

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%)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐