Redis开发与运维学习笔记—(3)
- 2020 年 3 月 31 日
- 筆記
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的机制。