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本身不建议保存持久化数据,所以只作为备选方案。

相关推荐
RestCloud13 小时前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud14 小时前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence16 小时前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
DemonAvenger1 天前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
AAA修煤气灶刘哥1 天前
别让Redis「歪脖子」!一次搞定数据倾斜与请求倾斜的捉妖记
redis·分布式·后端
AAA修煤气灶刘哥1 天前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
RestCloud2 天前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术2 天前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
christine-rr2 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
可涵不会debug2 天前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库