背景
在线上环境下,发现redis中key被莫名奇妙的删除了,起初怀疑是key过期但是查询了TTL并没有,在日志上加了删除key操作的打印 但是并没有看到产出这个key的日志记录,而且每次都是这个key被莫名奇妙删除掉,感觉很诡异。本篇主要记录排查问题的过程。
排查过程
首先我们发现redis中key莫名消失了,第一反应肯定是过期了,被打满了?某种淘汰机制? 但是由于每一次都是特定的key出现这种情况。而且同事说他没有进行批量操作,于是我准备先用monitor一探究竟,看看什么时候进行了这个key的删除操作。
redis-cli -a password MONITOR | grep 被删除的key
在输出中我看到了一条,同时删除了三个key
前面都一致只是后面的id不同。此时同事坚定的和我说没有进行批量操作,嘿嘿。根据前面的时间戳我定位到了具体的时间
在日志对应的时间这里可以看到affect=3,也就是对应上了我们redis monitor中看到的del三个key。但是日志里打印只看到了输出后缀为1的key。于是不服的我去看了下代码。直接破案
就是这个方法,异步的把我所有1开头的后缀的key都删掉了,日志上面又看不出来。之前是没看代码的,本文主要也是记录问题排查的方法,仅记录分享。