欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > redis过期策略和内存淘汰机制

redis过期策略和内存淘汰机制

2024/10/24 19:19:09 来源:https://blog.csdn.net/sdg_advance/article/details/142748511  浏览:    关键词:redis过期策略和内存淘汰机制

过期策略

Redis的过期策略采用的是定期删除惰性删除相结合的方式。

定期删除:Redis默认每100ms就机抽取一些设置了过期时间的key,并检具是否过,如果过期就删除。

定期删除是Redis主动删除策略策略.它可以确保过的key能够及时删除,但是会占用CPU资源去扫描key,可能会影响Redis的性能。

惰性删除:当一个key过时,不会立即从内存中删除.而是在访问这个key的时候才会触发删除操作。

惰性删除是Redis的被动删除策略,它可以节省CPU资源,但是会导致过期的key始终保存在内存中,占用存空间。

内存淘汰

Redis支持8种不同的内存淘汰策略:

noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略

volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰

allkeys-random:对全体key ,随机进行淘汰。也就是直接从db->dict中随机挑选

volatile-random:对设置了TTL的key ,随机进行淘汰。也就是从db->expires中随机挑选

allkeys-lru: 对全体key,基于LRU算法进行淘汰

volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰

allkeys-lfu: 对全体key,基于LFU算法进行淘汰

volatile-lfu: 对设置了TTL的key,基于LFI算法进行淘汰

以下是腾讯针对Redis的淘汰策略设置给出的建议:

当Redis作为缓存使用的候,推荐使用allkeys-lru淘汰策略。该策略会将最近最少使用的Key淘汰。默认倩况下,使用频率最低则后期命中的概率也低.所以将其淘汰。

当Redis作为半缓存半持久化使用,可以使用volatile-lru.但因为Redis本身不建议保存持久化数据,所以只作为备选方案。

版权声明:

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

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