Redis提供了redis-cli、redis-server、redis-benchmart等shell工具,今天对这些工具做下介绍。
redis-cli是最常用的redis工具。该工具我们最常使用的参数是-p和-h参数,其中-p参数后面跟端口,-h参数后面跟主机名称。当然,这两个参数可以缺省,默认是6379和127.0.0.1,如下:
[root@VM_48_10_centos ~]# redis-cli
127.0.0.1:6379> exit
[root@VM_48_10_centos ~]# redis-cli -p 6379 -h 127.0.0.1
127.0.0.1:6379> exit
这里对其他的参数做一下说明:
-r
-r(repeat)选项代表将命令执行多次
[root@VM_48_10_centos ~]# redis-cli -r 3 ping
PONG
PONG
PONG
-i
-i(interval)选项代表每隔几秒执行一次命令,但是-i选项必须和-r选项一起使用,下面每隔1s执行一次ping命令:
[root@VM_48_10_centos ~]# redis-cli -r 3 -i 2 ping
PONG
PONG
PONG
其中,单位为秒s,不支持毫秒的单位,如果想用毫秒,则需要使用对应的小数表示。
-x
-x选项表示从标准输入读取数据作为redis-cli的最后一个参数,例如下面的操作会将字符串world作为set hello的值:
echo "world"|redis-cli -x set hello
-c
-c(cluster)选项是连接redis cluster节点时需要用的。该选项可以防止move和ask异常
-a
如果redis配置了密码,则可以使用-a选项
--slave
slave选项是把当前客户端模拟成当前redis的从节点,可以用来获取当前redis节点的更新操作,是复制相关的参数。这个特点是比较棒的,和MySQL不一样的是不需要搭建其他的服务器,直接用客户端就能模拟从节点,从而获取当前主节点上的操作,就像show processlist抓取的当前执行SQL一样。
--rdb
该选项会请求redis实例生成并发送rdb持久化文件,保存在本地,可以用它作为持久化文件的定期备份。
--pipe
--pipe选项用于将命令封装成Redis通信协议定义的数据格式,批量发送给redis执行。
--bigkeys
该选项使用scan命令对redis的键进行采样,从中找到内存占用比较大的键值,从而排除系统的可能瓶颈
--eval
该选项用于执行lua脚本。
--latency
该参数有3个选项,分别是--latency,--latency-history以及--latency-dist,其中:
--latency选项可以测试客户端到目标redis的网络延迟,但是只输出一条信息
--latency-history测试网络延迟,可以分段测试延迟,每15s输出一次
--latency-dist会使用统计表的形式从控制台输出延迟统计信息
--stat
该选项可以试试获取Redis的重要统计信息,虽然info命令中的统计信息更全,但是能够实时看到一些增量数据,对于redis的运维还是有一定帮助。
[root@VM_48_10_centos ~]# redis-cli --stat
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
4 826.52K 1 0 3150 (+0) 112
4 826.52K 1 0 3151 (+1) 112
4 826.52K 1 0 3152 (+1) 112
4 826.52K 1 0 3153 (+1) 112
4 826.52K 1 0 3154 (+1) 112
Redis-Server详解
redis-server是用来启动redis服务的,常用的启动方式有下面几种:
1、直接启动:redis-server即可
2、增加配置参数:
redis-server --configkey1 --configValue .......
例如:
redis-server --port 6380
3、配置文件启动
redis-server /dir/redis.conf
除了启动redis之外,还有一个选项--test-memory,该选项可以检测当前操作系统能否稳定分配执行容量的内存给redis,通过这种检测可以有效避免因为内存问题造成的redis崩溃,举例:
redis-server --test-memory 1024
检测是否可以分配1G内存给redis
整个内存检测时间比较长,当输入passed this test时说明检测完毕。
PipeLine概念
上一节中,我们知道redis执行一条命令分为4个步骤:
发送命令、命令排队、执行命令、返回结果。
我们把发送命令+返回结果的时间成为往返时间RTT,redis中部分数据结构提供了mget,mset等批量执行的命令,有效节约了时间,但是大部分命令是不支持批量操作的,这样势必会增加耗时。而PipeLine机制能够改善这类问题。
Pipeline将一组Redis命令进行组装,通过一次RTT传给Redis,再将这组命令的执行结果按照顺序返回给客户端,有效的节约了时间。
redis-cli的--pipe参数实际上就是使用了Pipeline的机制。