Redis的定期删除和惰性删除

惰性删除

Redis并不是对于指定数据到了开发者设定好的生命结束时间就自动被删除,因为对这个内容进行不断轮询检测的性能消耗太大了,只有到了用户想要访问这个key所对应的内容的时候,Redis才会首先去检测这个key还是否有效,然后才将其进行删除。

这种做法虽然极大程度上利用了CPU但是会触发内存泄漏问题,因此就引入了定期删除机制。

定期删除

Redis的主线程每隔一段时间就会抽查一部分的key值,如果抽到过期的就会立即删除,如果抽到过期的占抽取总数的占比较大,主线程就会立刻触发的下一次的定期删除工作。

这样不会导致主线程一直都在定期删除吗?主线程内部有超时熔断机制,在执行定期删除任务达到一定时间就会立刻停下,转而对client请求进行处理。

注:4.0版本后,主线程对过期数据的清理工作,变成了主线程先查看释放内容大小,如果内存很大,就会摘除该指针并交由laze_free去清理,大大加快了释放空间的效率。

相关推荐
ClickHouseDB18 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_6399069418 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺19 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw19 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社20 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙20 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3761 天前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02141 天前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川1 天前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组1 天前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制