Redis开发与运维学习笔记—(3)

  • 2020 年 3 月 31 日
  • 筆記

Redis-cli详解

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的机制。