一、介绍
redis学了有一段时间了,以前都是看视频,看教程,很少看官方的东西。现在redis的东西要看的都差不多看完了。网上的东西也不多了。剩下来就看看官网的东西吧,一遍翻译,一遍测试。不错的使用体验,今天开始就写一下redis的客户端的使用,也就是redis-cli工具类,这个文件的内容真不少,一次写完有点吃力。分多次写吧。二、使用详解 1、redis-cli,Redis命令行界面 redis-cli是Redis命令行界面,它是一个允许向Redis发送命令、并直接从终端读取服务器发送的回复的简单的程序。 它有两种主要模式:一种交互模式,其中有一个REPL(读取评估打印循环),用户输入命令并获取回复;另一种模式是将命令作为redis-cli的参数发送,执行并打印在标准输出中。 在交互模式下,redis-cli具有基本的行编辑功能,可以提供良好的打字体验。 然而,redis-cli不仅仅具有以上功能,还有更高级的用法。有些选项可用来启动程序并将其置于特殊模式之下,以便redis-cli可以完成更复杂的任务,如模拟从站并打印从主站接收到的复制流,检查Redis服务器的延迟,并显示统计数据,甚至是延时采样和频率的ASCII-art频谱图,以及其他许多事情。 本指南将涵盖redis-cli的不同方面,从最简单到最高级的结尾。 如果您要广泛使用Redis,或者您已经这么做了,那么很可能会碰巧使用redis-cli。 花一些时间熟悉它可能是一个非常好的主意,一旦你知道了命令行界面的所有技巧,你就会更有效地使用Redis。 2、命令行的用法 只需运行一个命令并在标准输出上打印其答复就如同输入要作为redis-cli的分隔参数执行的命令一样简单:$ redis-cli -h 192.168.127.130 -p 6379 incr mycounter (integer) 7
该命令的结果是“7”。 由于Redis的结果是强类型的(它们可以是字符串,数组,整数,NULL,错误等等),您可以看到括号之间的就是结果的类型。 但是,当redis-cli的输出必须用作另一个命令的输入,或者我们希望将它重定向到一个文件时,这并不是一个好的做法。
实际上,redis-cli当检测到标准输出是一个tty设备时就会来显示这些附加信息以帮助提高人们的可读性。 否则,它将通过 auto-enable 启用原始输出模式,如下例所示:$ redis-cli -h 192.168.127.130 -p 6379 incr mycounter > /tmp/output.txt $ cat /tmp/output.txt 8
$ redis-cli -h 192.168.127.130 -p 6379 --raw incr mycounter 9
$ redis-cli -h 192.168.127.130 -p 6379 ping PONG
$ redis-cli -h 192.168.127.130 -p 6379 -a myUnguessablePazzzzzword123 ping PONG
$ redis-cli -h 192.168.127.130 -p 6379 flushall OK $ redis-cli -h 192.168.127.130 -p 6379 -n 1 incr a (integer) 1 $ redis-cli -h 192.168.127.130 -p 6379 -n 1 incr a (integer) 2 $ redis-cli -h 192.168.127.130 -p 6379 -n 2 incr a (integer) 1
$ redis-cli -u redis://p%40ssw0rd@redis-16379.hosted.com:16379/0 ping PONG
$ redis-cli -h 192.168.127.130 -p 6379 -x set foo < /etc/services OK $ redis-cli -h 192.168.127.130 -p 6379 getrange foo 0 50 "#\n# Network services, Internet style\n#\n# Note that "
$ cat /tmp/commands.txt set foo 100 incr foo append foo xxx get foo $ cat /tmp/commands.txt | redis-cli -h 192.168.127.130 -p 6379 OK (integer) 101 (integer) 6 "101xxx"
command.txt中的所有命令都由redis-cli一个接一个地执行,就好像它们是由用户交互式键入的一样。 如果需要,可以在文件内使用双引号来标识字符串,这样在字符串中间就可以包含空格或换行符或其他特殊字符,但是此字符串是作为一个参数使用的:
$ cat /tmp/commands.txt set foo "This is a single argument" strlen foo $ cat /tmp/commands.txt | redis-cli -h 192.168.127.130 -p 6379 OK (integer) 25
$ redis-cli -h 192.168.127.130 -p 6379 -r 5 incr foo (integer) 1 (integer) 2 (integer) 3 (integer) 4 (integer) 5
要长时间运行相同的命令,请使用-1作为计数。 因此,为了随时监控RSS存储器的大小,可以使用如下的命令:
$ redis-cli -h 192.168.127.130 -p 6379 -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 ...
$ redis-cli -h 192.168.127.130 -p 6379 lpush mylist a b c d (integer) 4 $ redis-cli -h 192.168.127.130 -p 6379 --csv lrange mylist 0 -1 "d","c","b","a"
$ cat /tmp/script.lua return redis.call('set',KEYS[1],ARGV[1]) $ redis-cli -h 192.168.127.130 -p 6379 --eval /tmp/script.lua foo , bar OK
Redis EVAL命令将脚本使用的键列表和其他非键参数作为不同的数组。在调用EVAL命令时,您可以将key的数量作为一个数字提供。 但是,使用redis-cli并使用上面的--eval选项,并没有明确指定key的数量。相反,它使用用逗号分隔键和参数。这就是为什么在上面的调用中你看到foo,bar作为参数。
所以foo会填充KEYS数组,bar会填充ARGV数组。 编写简单脚本时,--eval选项很有用。对于更复杂的工作,使用Lua调试器肯定更适合。可以混合使用这两种方法,因为调试器也使用来自外部文件的执行脚本。 9、交互模式 到目前为止,我们探讨了如何使用Redis CLI作为命令行程序。 这对于脚本和某些类型的测试非常有用,但是大多数人的大部分时间将会使用redis-cli的交互模式。 在交互模式下,用户在提示符下键入Redis命令。该命令被发送到服务器,进行处理,回复被解析回来并呈现为更简单的形式来阅读。 在交互模式下运行CLI不需要什么特别的东西 - 在没有任何参数的情况下运行即可,并且您处于:$ redis-cli -h 192.168.127.139 -p 6379 192.168.127.130:6379> ping PONG
192.168.127.130:6379> select 2 OK 192.168.127.130:6379[2]> dbsize (integer) 1 192.168.127.130:6379[2]> select 0 OK 192.168.127.130:6379> dbsize (integer) 503
192.168.127.130:6379> connect metal 6379 metal:6379> ping PONG
192.168.127.130:6379> connect 192.168.127.130 9999 Could not connect to Redis at 192.168.127.130:9999: Connection refused not connected> ping Could not connect to Redis at 192.168.127.130:9999: Connection refused not connected> ping Could not connect to Redis at 192.168.127.130:9999: Connection refused
192.168.127.130:6379> debug restart Could not connect to Redis at 192.168.127.130:6379: Connection refused not connected> ping PONG 192.168.127.130:6379> (now we are connected again)
$ redis-cli -h 192.168.127.130 -p 6379 192.168.127.130:6379> multi OK 192.168.127.130:6379> ping QUEUED ( here the server is manually restarted ) 192.168.127.130:6379> exec (error) ERR EXEC without MULTI
192.168.127.130:6379> Z192.168.127.130:6379> ZADD 192.168.127.130:6379> ZCARD
192.168.127.130:6379> 5 incr mycounter (integer) 1 (integer) 2 (integer) 3 (integer) 4 (integer) 5
192.168.127.130:6379> help PFADD PFADD key element [element ...] summary: Adds the specified elements to the specified HyperLogLog. since: 2.8.9 group: hyperloglog