redis-cli 是Redis命令行界面,这是一个简单的程序,它允许将命令发送到Redis,并直接从终端读取服务器发送的回复。

它有两种主要模式:交互式模式,用户可以在其中键入命令并获得回复;

[root@192 bin]# ./redis-cli 
127.0.0.1:6379>

另一种模式是将命令作为的参数发送redis-cli,执行并打印在标准输出上。

[root@192 bin]# ./redis-cli set test 12
OK
[root@192 bin]# ./redis-cli get test
"12"
[root@192 bin]#

在交互模式下,redis-cli具有基本的行编辑功能,以提供良好的打字体验。

但是redis-cli,不仅如此。您可以使用一些选项来启动程序,以使其进入特殊模式,这样redis-cli绝对可以执行更复杂的任务,例如模拟从服务器并打印从主服务器接收的复制流,检查Redis服务器的延迟并显示统计数据,甚至显示延迟样本和频率以及其他许多东西的ASCII频谱图。

redis信息输出到终端:

默认是显示人类易读的信息

[root@192 bin]# ./redis-cli get test > /tmp/output
[root@192 bin]# cat /tmp/output 
12

--raw强制使用原始输出

[root@192 bin]# ./redis-cli --raw get test
12

 --no-raw强制使用易读信息

[root@192 bin]# ./redis-cli --no-raw get test
"12

 

主机,端口,密码和数据库

默认情况下redis-cli,该服务器通过127.0.0.1端口6379连接到服务器。您可以猜测,可以使用命令行选项轻松更改此设置。

指定其他主机名或IP地址,请使用-h<ip>

为了设置其他端口,请使用-p <port>

如果有密码的话,执行身份验证,请使用-a <password>

如果指定redis数据库编号,请使用-n <dbnum>

[root@192 bin]# ./redis-cli -h localhost -p 6379 ping
PONG
[root@192 bin]#
[root@192 bin]# ./redis-cli flushall
OK
[root@192 bin]# ./redis-cli -n 1 incr a
(integer) 1
[root@192 bin]# ./redis-cli -n 1 incr a
(integer) 2
[root@192 bin]# ./redis-cli -n 2 incr a
(integer) 1
[root@192 bin]#

从其他程序获取输入

1、我们可以使用-x选项,从文件输入来作为参数。

root@192 bin]# ./redis-cli -x set conf < /etc/services
OK
[root@192 bin]# ./redis-cli  getrange conf 0 10
"# /etc/serv"
[root@192 bin]# ./redis-cli  getrange conf 0 50
"# /etc/services:\n# $Id: services,v 1.55 2013/04/14 "
[root@192 bin]#

2、写入文本的命令组合,一起执行,即上一篇所说的管道

[root@192 bin]# cat /tmp/commands.txt
set index 1
incr index
append index xyz
get index
set foo "this is a element!"
strlen foo
[root@192 bin]# cat /tmp/commands.txt | ./redis-cli
OK
(integer) 2
(integer) 4
"2xyz"
OK
(integer) 18
[root@192 bin]#

连续运行相同的命令

用户选择两次执行之间的暂停,可以执行相同的命令指定次数。这在不同的上下文中很有用,例如,当我们要连续监视一些关键内容或INFO字段输出时,或者当我们要模拟一些重复发生的写事件时(例如每5秒将一个新项目推入一个列表)。

此功能由两个选项控制:-r <count>-i <delay>。第一个说明运行命令的次数,第二个说明配置不同命令调用之间的延迟(以秒为单位)(可以指定十进制数(如0.1,以表示100毫秒)。

默认情况下,间隔(或延迟)设置为0,因此命令会尽快执行:

[root@192 bin]# ./redis-cli -r 5 -i 2 incr a
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
[root@192 bin]#

要永久运行同一命令,-r的参数改为-1,为了随时间监视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 ...

 自己的:

[root@192 bin]# ./redis-cli -r 5 -i 1 INFO | grep rss_human
used_memory_rss_human:3.04M
used_memory_rss_human:3.04M
used_memory_rss_human:3.04M
used_memory_rss_human:3.04M
used_memory_rss_human:3.04M
[root@192 bin]# ./redis-cli -r -5 -i 1 INFO | grep rss_human
[root@192 bin]# ./redis-cli -r 0 -i 1 INFO | grep rss_human
[root@192 bin]# ./redis-cli -r 1 -i 1 INFO | grep rss_human
used_memory_rss_human:3.04M

 

CSV输出

有时您可能需要使用redis-cli以便将数据从Redis快速导出到外部程序。这可以使用CSV(逗号分隔值)输出功能来完成:

[root@192 bin]# ./redis-cli lpush mylist a b c d
(integer) 4
[root@192 bin]# ./redis-cli  lrange mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
[root@192 bin]# ./redis-cli  --csv lrange mylist 0 -1
"d","c","b","a"
[root@192 bin]#

 运行简单Lua脚本

(脚本还没有学习到,之后再进行扩展)

[root@192 bin]# vim /tmp/script.lua

return redis.call('set',KEYS[1],ARGV[1])
~
~
~
"/tmp/script.lua" [新] 1L, 41C 已写入                                                        
[root@192 bin]# ./redis-cli --eval /tmp/script.lua foo , bar
OK
[root@192 bin]# ./redis-cli get foo
"bar"
[root@192 bin]#


 


使用EVAL 命令的时候你需要提供键值的数量,但是,redis-cli使用上述--eval选项,无需显式指定键的数量。相反,它使用用逗号分隔键和参数的约定。这就是为什么在上述调用中您将其foo , bar视为参数的原因。

所以,foo将填充KEYS数组,barARGV数组。

--eval选项在编写简单脚本时很有用。对于更复杂的工作,使用Lua调试器绝对更舒适。可以混合使用两种方法,因为调试器还使用来自外部文件的执行脚本。