Redis命令回溯方案
公司的缓存经常报CPU高的情况,在警报报出来的时刻,可能已经过了实例峰值执行的时间段了,再执行monitor命令去分析命令可能已经不够准确了,没法准确还原现场。另外monitor命令也不能长时间执行。
我有一个想法,就是做一个类似AOF机制的功能,每秒将执行的所有命令写入磁盘,只记录 【时间戳,命令,缓存Key,值长度】这几个字段的值,这样儿可以确保日志记录文件不会很大,也不需要aof重写。日志文件保留24小时,每天执行定时任务进行清除。
这个方案的缺点是需要修改Redis的源码,增加类似AOF的执行功能或者新增Redis Module,难度较高,另外对于已存在的应用,去做相应改造的话,需要涉及到集群的重建和迁移,工作量较大,迁移操作过程可能会对现有业务有所影响。