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