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

相关推荐
煎蛋学姐几秒前
SSM校园兼职招聘系统x6u36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·企业管理·ssm 框架·校园兼职招聘系统
ChineHe1 小时前
Redis基础篇004_Redis Pipeline流水线详解
数据库·redis·缓存
西柚补习生1 小时前
通用 PWM 原理基础教学
数据库·mongodb
小张程序人生2 小时前
ShardingJDBC读写分离详解与实战
数据库
木风小助理2 小时前
三大删除命令:MySQL 核心用法解析
数据库·oracle
tc&2 小时前
redis_cmd 内置防注入功能的原理与验证
数据库·redis·bootstrap
麦聪聊数据2 小时前
MySQL 性能调优:从EXPLAIN到JSON索引优化
数据库·sql·mysql·安全·json
Facechat2 小时前
视频混剪-时间轴设计
java·数据库·缓存
lalala_lulu2 小时前
MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?(超详细版)
数据库·mysql
曹牧2 小时前
Oracle:大量数据删除
数据库·oracle