Redis Shell

Redis 提供了 redis-cliredis-serverredis-benchmark 等 Shell 工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。

redis-cli 详解

1、-r

-r(repeat)选项代表将命令执行多次,例如下面操作将会执行三次 ping 命令:

$ redis-cli -r 3 ping
PONG
PONG
PONG
PONG
2、-i

-i(interval)选项代表每隔几秒执行一次命令,但是 -i 选项必须和 -r 选项一起使用,下面的操作会每隔 1 秒执行一次 ping,一共执行 5 次:

$ redis-cli -r 5 -i 1 ping
PONG
PONG
PONG
PONG
PONG

注意 -i 的单位是秒,不支持毫秒为单位,但是如果想以每隔 10 毫秒执行一次,可以用 -i 0.01,例如:

$ redis-cli -r 5 -i 0.01ping
PONG
PONG
PONG
PONG
PONG

例如下面的操作利用 -r 和 -i 选项,每隔 1 秒输出内存的使用量,一共输出 100 次

$ redis-cli -r 100 -i 1 info |grep used_memory_human
used_memory_human:793.10K
used_memory_human:793.10K
used_memory_human:793.10K
··········································
used_memory_human:793.10K

3、-x

-x 选项代表从标准输入(stdin)读取数据作为 redis-cli 的最后一个参数例如下面的操作会将字符串 world 作为 set hello 的值:

$ echo "world"  |  redis-cli  -x  set  hello
OK
4、-c

-c(cluster)选项是连接 Redis Cluster 节点时需要使用的,-c 选项可以防止 moved 和 ask 异常。

5、-a

如果 Redis 配置了密码,可以用 -a(auth)选项,有了这个选项就不需要手动输入 auth 命令。

6、--scan 和 --pattern

--scan 选项和 --pattern 选项用于扫描指定模式的键,相当于使用 scan 命令。

7、--slave

--slave 选项是把当前客户端模拟成当前 Redis 节点的从节点,可以用来获取当前 Redis 节点的更新操作,合理的利用这个选项可以记录当前连接 Redis 节点的一些更新操作,这些更新操作很可能是实际开发业务时需要的数据。

下面开启第一个客户端,使用 --slave 选项,看到同步已完成:

$ redis-cli --slave
SYNC with master, discarding 95 bytes of bulk transfer...
SYNC done. Logging commands from master.
"PING"

在开启另一个客户端做一些更新操作:

$ 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 
(integer) 1
127.0.0.1:6379> get hello
"world"

再开启另一个客户端做一些更新操作

$ redis-cli 
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> incr count 
(integer) 1
127.0.0.1:6379> get hello
"world"

第一个客户端会收到 Redis 节点的更新操作:

$ redis-cli --slave
SYNC with master, discarding 95 bytes of bulk transfer...
SYNC done. Logging commands from master.
"PING"
"PING"
"PING"
"PING"
"PING"
"SELECT","0"
"set","hello","world"
"incr","count"

注意:PING 命令是由于主从复制产生的。

8、--rdb

--rdb 选项会请求 Redis 实例生成并发送 RDB 持久化文件,保存在本地。可使用它做持久化文件的定期备份。

9、--pipe

--pipe 选项用于将命令封装成 Redis 通信协议定义的数据格式,批量发送给 Redis 执行。

10、--bigkeys

--bigkeys 选项使用 scan 命令对 Redis 的键进行采样,从中找到内存占用比较大的键值,这些键可能是系统的瓶颈。

11、--eva

--eval 选项用于执行指定 Lua 脚本。

12、--latency

latency 有三个选项,分别是 --latency、--latency-history、--latency-dist。它们都可以检测网络延迟,对于 Redis 的开发和运维非常有帮助。

13、--stat

--stat 选项可以实时获取 Redis 的重要统计信息,虽然 info 命令中的统计信息更全,但是能实时看到一些增量的数据(例如 requests)对于 Redis 的运维还是有一定帮助。
如下所示:

$ redis-cli --stat
------- data ------ --------------------- load -------------------- - child -
keys       mem      clients blocked requests            connections          
2          1.79M    2       0       1922200 (+0)        22          
2          1.79M    2       0       1922201 (+1)        22          
2          1.79M    2       0       1922202 (+1)        22          
2          1.79M    2       0       1922203 (+1)        22          
14、--raw 和 --no-raw

--no-raw 选项是要求命令的返回结果必须是原始的格式,--raw 恰恰相反,返回格式化后的结果。
在 Redis 中设置一个中文的 value:

$ 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 
你好

你可能感兴趣的:(Redis Shell)