42.Redis的配套工具
我们这次来说一些Redis常见的,好用的命令及工具
那么首先是一个监控命令:INFO
Redis本身提供的INFO命令会返回丰富的实例运行监控信息,这个命令也是Redis监控工具的基础,其返回的基本信息可以分为5大类,如下所示
监控Redis运行状态的时候,INFO返回的结果很有用,上面附加参数中,最为常见的是commandstat cpu和memory四个参数的返回结果,commandstats包含了命令的执行次数和时间,占用了多少CPU资源,cpu表示CPU资源情况,memory表示内存资源的使用情况
以及启用RDB和AOF功能的时候,关注下persistence参数的返回,查看RDB和AOF的执行
然后是更为上层的监控框架 Prometheus
开源的系统监控报警框架,核心功能是从被监控系统中拉取监控数据,进行可视化展示,监控数据可以保存到时序数据库中,以便运维人员进行历史查询
这需要要求被监控的系统的上报格式符合Prometheus的采集格式
对于这个采集格式的约定,提供了Redis-exporter来进行监控Redis,利用INFO命令监控到的运行状态和各种统计信息来提供给Prometheus,进行可视化展示和报警设置
除了Redis实例的运行,还可以监控键值对大小和集合类型的元素个数,运行Redis-exporter的时候,使用check-keys命令选项实现
类似Redis-exporter的还有,redis-stat和Redis Live,与之相比,都是轻量级的监控工具,但都不太常用,适合二次开发
对于数据迁移和数据一致性校验,阿里云团队都提供相当优秀的实现方案
数据迁移常用的工具是Redis-shake,这是阿里云Redis和MongoDB团队开发的一个用于Reids数据同步的工具
其原理是先启动Redis-shake进程,模拟了一个Redis实例,然后和源实例进行全量数据同步
同步完成之后,Redis-shake会将这些增量命令同步给目的实例
整体流程如下
Redis-shake,其支持实例间的数据迁移,也支持集群到集群的数据迁移
其次,有的Redis切片集群会将Proxy接收请求操作,Redis-shake同样支持和proxy进行数据迁移
其次是数据一致性的工具,Redis-full-check
Redis-full-check的工具相比较很简单,就是对源实例和目的的实例中数据进行全量对比,从而完成数据校验,其还是用了多轮比较的方法
第一轮校验的时候,Redis-full-check会找到所有不一致的数据,记录到sqlite数据库中
第二轮校验开始,Redis-full-check只比较上一轮结束后记录在数据库中不一致的数据,而且提供了三种对比模式,Redis-full-check利用一个参数comparemode参数进行设置
KeyOutline,只对比key值是否相同
ValueOutline,只对比value长度是否相同
FullValue,对比Key和value值
最后说一下Redis集群运维管理工具CacheCloud
CacheCloud是搜狐开发的一个面向Redis运维管理的云平台,实现了主从集群,哨兵集群和Redis Cluster的自动部署和管理,用户可以在直接平台的管理界面上进行操作
针对常见的集群运维需求,CacheCloud提供了5个运维操作
上线实例
下线实例
从节点
故障切换
配置管理
初次外,CacheCloud还提供了丰富的监控信息,会利用INFO信息将运行时信息保存下来,做可视化的展示,Redis运行发生问题的时候,运维人员会查询保存的历史记录,结合方式状态进行分析
那么总结一下,我们介绍了几种Redis的运维工具
我们先了解下Redis的INFO命令,命令是监控工具的基础,监控工具会基于INFO命令提供的信息进行二次加工,除此外还有三种来监控Redis实时状态的运维工具,分别是Redis-exporter redis-stat 和 redis Live
然后迁移和数据一致性可以考虑阿里云提供的Redis-shake和Redis-full-check
对于Redis的全局运维,可以使用CacheCloud工具进行管理