美文网首页
Redis key 丢失排查

Redis key 丢失排查

作者: kacen | 来源:发表于2022-10-06 14:20 被阅读0次
相信用Redis的小伙伴都有遇到过key丢失的问题,当然,每个人的用的策略不一样也可能会导致解决问题的方案不一样。本文主要的主要原因内存不足导致的。

1.首先要先检查key是否设置了过期时间

可以使用命令查看
ttl key
如果值是-1,表示没有设定过期时间

2.检查是否有人删除了key或者flushdb和flushall

执行info commandstats
如图1,格式将会是cmdstat_xxx: calls=???,usec=???,user_per_call=???的出现

截屏2022-10-06 下午2.01.30.png

1.命令执行的次数 2.命令耗费的cpu时间ms 3.执行每个命令耗费的平均cpu时间ms

可以查看del、flushdb、flushall的次数,可能执行时已经有大量的调用,可以先执行config resetstat进行重置

3.检查内存的配置,然后再查看是否超出内存设定的参数导致被回收

可以使用命令 info 查看
evicted(驱逐)_keys: 因最大内存容量限制而被驱逐的键数量

截屏2022-10-06 下午2.08.47.png

如果evited keys大于0的情况表示已经进行了驱逐,可以往内存不足的方向去寻找问题。

4.检查是否设置了最大内存

config get maxmemory 可以进行查看

5.检查内存使用情况

info memory 查看当前内存量和峰值

截屏2022-10-06 下午2.14.09.png

6.如果设定了最大内存,内存也接近并且峰值非常的大,就要看看淘汰策略是否合适。

6.1 先查看当前策略

config get maxmemory-policy

因为先前是去人是内存问题删除的key,所以可以
1.淘汰策略更改为volatile-lru
2.设置最大内存 config set memory ???

经过上面调整,继续观察是否有key的丢失,如果没有那么可以判定是因为该原因。文章里图片是为了更直观的进行解释说明,并没有使用生产服务器上的具体参数,请见谅。

相关文章

网友评论

      本文标题:Redis key 丢失排查

      本文链接:https://www.haomeiwen.com/subject/dvbmartx.html