Redis key 丢失排查

相信用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的丢失,如果没有那么可以判定是因为该原因。文章里图片是为了更直观的进行解释说明,并没有使用生产服务器上的具体参数,请见谅。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Redis [TOC] NoSql入门和概述 入门概述 互联网时代背景下大机遇,为什么用nosql 1.单机MyS...
    hakuna4Matata阅读 3,362评论 0 0
  • Redis之父:Salvatore Sanfilippo本文基于Redis3.2.100版本(较早版本) 问题 R...
    卡斯特梅的雨伞阅读 4,149评论 0 1
  • 01.NoSQL入门概述-上 1.互联网时代背景下大机遇,为什么用NoSQL 1.单机MySQL的美好年代 在90...
    ytyt1313阅读 1,769评论 0 0
  • Catalog 1 Redis适用场景?Redis底层数据结构使用场景? 2 Redis到底是单线程还是多线程?R...
    allen锅阅读 2,828评论 0 0
  • redis连接数与最大连接数 方法1:在redis-cli命令行使用:info clients可以查看当前的red...
    寻水鱼阅读 5,836评论 0 0

友情链接更多精彩内容