美文网首页
redis丢失键值的几种情况

redis丢失键值的几种情况

作者: 进击的胖达 | 来源:发表于2017-12-26 09:49 被阅读475次

    大致总结一下redis丢失键值的情况一般为以下几种情况:
    1. 是否有大量过期key被清理
    分析:
    原因:这种情况并不是真正的“丢失”键值,只是达到了设置的key的过期值
    应对方案:根据项目情况设置合理的键值过期时间,或者设置为不过期,对不使用的key进行删除
    2. 是否maxmemory不足导致redis自动清理部分key以节省空间
    分析:
    原因:redis内存使用达到设置的可用内存的上限,redis自动清理部分key已节省空间给新的key使用
    应对方案:适当的调大maxmemory
    3. 主库故障后自动重启
    分析:
    原因:主库由于某种原因挂掉,但是在redis哨兵发现并启动切换之前被监控程序重启,如果主库有完整的备份策略,则丢失重启之前的一小段时间的数据,如果主库为了性能没有设置备份策略,则可能重启之后成为一个空的库,一段时间后,从库发现主库的runid发生变化,自动同步主库,导致数据丢失严重
    应对方案:

    1、建议对主库使用至少一种持久化策略,即使频率低
    2、如果没有完整的持久化策略不建议使用自动重启操作,特别是在redis集群方案中,因为在集群方案中使用哨兵的判断和操作是最安全的

    4. 网络分区的问题,可能导致短时间的写入数据丢失
    分析:
    原因:网络不稳定导致的短时写入失败或触发哨兵的自动切换(单独的主备方案触发切换期间会有数据丢失)
    应对方案:保障网络环境稳定可达

    1. 由于网络等原因导致主从复制数据不一致,发生故障切换后,出现数据丢失
      分析:略
    2. 业务逻辑bug或者代码bug导致误删除
      分析:
      原因:代码运行中有对key的删除操作,导致误删了不该删除的key
      应对方案:改代码

    ps:故障的排查更多的靠监控的精细度,如内存使用百分比的监控,对删除命令的监控,过期key的数量监控,slowlog的监控(大量key的查找和删除会被记录)等等

    相关文章

      网友评论

          本文标题:redis丢失键值的几种情况

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