
Redis中的删除策略和逐出算法
发布日期:2021-05-06 22:53:40
浏览次数:10
分类:技术文章
本文共 997 字,大约阅读时间需要 3 分钟。
Redis中的删除策略和逐出算法
删除策略和逐出算法是两个完全不同的东西,千万不要搞混淆了。
删除策略
删除策略指的是,当key设置了过期时间,如果到了过期时间,那么采用什么策略来删除这个过期的key.
3种删除策略
- 定时删除(当定时器计数完就将该数据删除,消耗CPU资源);
- 惰性删除(计时器到点后不立马删除,而是下一次再使用的时候删除,相当于以空间换时间);
- 定期删除(相当于前两个方案的折衷,以一定的周期执行删除操作,即每秒执行删除操作的CPU占有率有一个上线,在具体执行删除操作中又会采用一定的策略先选取M个key看过期率,然后再执行下一个数据库的删除策略还是采取当前数据库的全库扫描)
定时删除 | 节约内存 | 不分时段占用CPU资源,频度高 | 拿时间换空间 |
惰性删除 | 内存占用严重 | 延时执行,CPU利用率高 | 拿空间换时间 |
定期删除 | 内存定期随机清理 | 每秒话费固定的CPU资源维护内存 | 随机抽查,重点抽查 |
逐出算法
逐出算法指的是,当Redis的内存不够了,又有新的key放进来,那么我们就需要从已有的key种选择某些淘汰掉以腾出空间供新key使用。
设置了过期时间的key中的逐出策略
检测易失数据(可能会过期的数据集server.db[i].expires)
- volatile-lru: 挑选最近最少使用的数据淘汰
- volatile-lfu: 挑选最近使用次数最少的数据淘汰
- volatile-ttl: 挑选将要过期的数据淘汰
- volatile-random: 在设置了过期时间的key中随机选择数据淘汰
LRU: Least Recently Used
LFU: Least Frequently Used
所有key中的逐出策略
检测全库数据(所有数据集server.db[i].dict)
- allkeys-lru: 挑选最近最少使用的数据淘汰
- allkeys-lfu: 挑选最近使用次数最少的数据淘汰
- allkeys-random: 在所有key中随机挑选设置了过期时间的数据淘汰
不使用逐出策略
no-eviction: 禁止驱逐数据(Redis默认策略),会引发OOM(Out OfMemory)
配置
在启动配置文件中:
maxmemory-policy volatile-lru
使用INFO命令输出监控信息,查询缓存hit和miss的次数,根据业务需求调优Redis配置。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月02日 13时46分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CENTOS 删除nginx
2019-03-03
【redis键过期删除策略】很高兴再次认识你
2019-03-03
【工具篇】EasyExcel的应用
2019-03-03
SSM发送手机验证码——以网建SMS为例
2019-03-03
大范围卫星影像快速处理
2019-03-03
监控264后缀文件播放
2019-03-03
网站在线偷拍照片源码
2019-03-03
Thinkphp6.0+vue个人虚拟物品发卡网站源码
2019-03-03
手游服务端框架之关于玩家数据的解决方案
2019-03-03
游戏服务端框架之模仿SpringMvc实现消息路由
2019-03-03
动态摇动吊牌自适应网站404页面源码
2019-03-03
炫酷文字消失动画网站404页面源码
2019-03-03
EMLOG模板山河网站主题分享
2019-03-03
2019数字音乐市场年度回顾,QQ音乐全面领先
2019-03-03
花1亿扶持优质红人,如涵推动网红经济出圈之路有何深意?
2019-03-03
抢滩抖音、B站,快手港股IPO进程加速
2019-03-03
智能穿戴的结局依然充满悬念
2019-03-03
Linux中的虚拟内存机制和内存映射
2019-03-03
Android系统启动系列5 SystemServer进程下
2019-03-03
Android四大组件系列9 ContentProvider原理
2019-03-03