您的位置:首页 > 文旅 > 美景 > 手机之家中关村在线_北京景观设计公司10强_2020年十大关键词_seo站长网

手机之家中关村在线_北京景观设计公司10强_2020年十大关键词_seo站长网

2024/10/7 4:24:42 来源:https://blog.csdn.net/m0_74064008/article/details/142456116  浏览:    关键词:手机之家中关村在线_北京景观设计公司10强_2020年十大关键词_seo站长网
手机之家中关村在线_北京景观设计公司10强_2020年十大关键词_seo站长网

1.基本概念:

        Redis 的过期删除策略主要用于管理具有过期时间的键,确保在键过期后适时清除以释放内存。Redis 的过期删除策略主要分为三种方式。

2.惰性删除(Lazy Deletion)

        Redis 不主动去删除过期的键,而是在键被访问时才检查它是否过期。如果过期,立即删除并返回空结果。

  • 优点:降低了不必要的内存删除操作,节省 CPU 资源。
  • 缺点:如果某些键从不被访问,过期后也不会被删除,可能会导致内存占用增多。

3.定期删除(Periodic Deletion)

        Redis 会定期随机抽取一部分设置了过期时间的键,检查它们是否过期,并删除过期的键。默认情况下,Redis 每秒执行 10 次这样的检查(可以通过 hz 参数配置频率)。

  • 优点:可以清除未被访问的过期键,防止内存过多占用。
  • 缺点:是抽样的方式,部分过期键可能会因为没被抽到而延迟删除。

4.定期删除流程

        Redis 定期删除策略并不会遍历删除每个过期键,而是采用随机抽取的方式删除过期键,同时为了保证过期扫描不影响 Redis 主业务,Redis 的定期删除策略中还提供了最大执行时间,以保证 Redis 正常并高效的运行。

Redis 定期删除流程如下:

        (1).从设置了过期时间的字典中随机取出 20 个键;

        (2).删除这 20 个键中过期的键;

        (3).如果过期 key 的比例超过 25% ,重复步骤 (1)

        同时为了保证过期扫描不会出现循环过度,导致线程卡死现象,算法还增加了扫描时间的上限,默认不会超过 25ms。 

5.内存淘汰(Eviction Policy)

        当 Redis 内存达到上限时,会根据配置的策略选择删除某些键,以腾出空间给新数据。常见的策略有:

  • volatile-lru:从设置了过期时间的键中,使用最近最少使用(LRU)策略淘汰。
  • allkeys-lru:从所有键中,使用 LRU 策略淘汰。
  • volatile-random:从设置了过期时间的键中随机淘汰。
  • allkeys-random:从所有键中随机淘汰。
  • volatile-ttl:优先淘汰最近要过期的键。
  • noeviction:不删除任何键,当内存满时,新写入操作会报错。

总结:

        通过结合惰性删除、定期删除和内存淘汰策略,Redis 能在不同场景下灵活管理键的过期和删除,保证内存的高效利用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com