Redis数据过期、淘汰策略

数据过期策略:

惰性删除:

设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key。

这种方式对cpu友好(只在用的时候判断要不要删除不用一直判断),对内存不友好(过期的key一直存在内存中)

定期删除:

每隔一段时间,我们就对一些key进行检查,删除里面过期的key(从一定数量的数据库中取出一定数量的随机key进行检查,并删除其中的过期key)。

定期删除有两种方式:

优点:可以通过限制删除操作执行的时长和频率来减少删除操作对CPU 的影响。另外定期删除,也能有效释放过期键占用的内存。 缺点:难以确定删除操作执行的时长和频率。

Redis实际上是两种策略配合使用的!!!

数据淘汰策略:

  • 内存满的时候不能写入(默认)

  • 剩余存活时间最小的被淘汰

  • 两种随机淘汰:全体key随机淘汰、设置了存活时间的key随机淘汰

  • 两种LRU淘汰:全体keyLRU淘汰、设置了存活时间的keyLRU淘汰

  • 两种LFU淘汰:全体keyLFU淘汰、设置了存活时间的keyLFU淘汰

相关推荐
信仰_27399324321 分钟前
Redis红锁
数据库·redis·缓存
爬山算法3 小时前
Redis(120)Redis的常见错误如何处理?
数据库·redis·缓存
野生技术架构师3 小时前
盘一盘Redis的底层数据结构
数据结构·数据库·redis
Feng.Lee3 小时前
聊聊缓存测试用例设计方案
缓存·测试用例
R.lin4 小时前
memcached 的核心工作机制、优缺点、适用场景以及常见问题的处理方式
数据库·缓存·memcached
bug总结4 小时前
更新原生小程序封装(新增缓存订阅)完美解决
前端·缓存·小程序
笃行客从不躺平6 小时前
CPU 缓存 高并发探索
缓存
freedom_1024_10 小时前
LRU缓存淘汰算法详解与C++实现
c++·算法·缓存
羊锦磊10 小时前
[ 项目开发 1.0 ] 新闻网站的开发流程和注意事项
java·数据库·spring boot·redis·spring·oracle·json
wddblog11 小时前
多级缓存体系与热点对抗术--速度是用户体验的王道,而缓存是提升速度的银弹
缓存·ux