zoukankan      html  css  js  c++  java
  • redis 过期策略

    过期策略

    定期删除+惰性删除

    所谓定期删除,指的是 redis 默认是每隔 100ms随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。

    1.注意,这里可不是每隔 100ms 就遍历所有的设置过期时间的 key。而是每隔 100ms 随机抽取一些 key 来检查和删除的。

    2.问题,定期删除可能会导致很多过期 key 到了时间并没有被删除掉,所以就有了惰性删除:

    即在你获取某个 key 的时候,redis 会检查一下这个 key, 如果设置了过期时间并且过期了,则在此时就删掉这个key,不会返回任何内容。

    3.实际上,如果定期删除漏掉了很多过期 key,也没去查询这些key,也就没走惰性删除,那么如果大量过期 key 堆积在内存里,导致 redis 内存块耗尽了,咋整?

    答案是:走内存淘汰机制。

    内存淘汰机制

    --redis官方文档

    redis 内存淘汰机制有以下几个:

    • allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key。最常用的
    • noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错。
    • allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key。
    • volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key。
    • volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。
    • volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。

    LRU相关请移步这篇文章LRU

  • 相关阅读:
    mac上python3安装HTMLTestRunner
    双目深度估计传统算法流程及OpenCV的编译注意事项
    深度学习梯度反向传播出现Nan值的原因归类
    1394. Find Lucky Integer in an Array
    1399. Count Largest Group
    1200. Minimum Absolute Difference
    999. Available Captures for Rook
    509. Fibonacci Number
    1160. Find Words That Can Be Formed by Characters
    1122. Relative Sort Array
  • 原文地址:https://www.cnblogs.com/charm-j/p/10373410.html
Copyright © 2011-2022 走看看