Redis过期数据的删除策略
Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态
- XX :具有时效性的数据
- -1 :永久有效的数据
- -2 :已经过期的数据或被删除的数据或未定义的数据
redis中的数据可以设置一个过期时间,比如登录时的验证码,通常都会对其设置一个1—3分钟的有效时间。当数据过了期限后,应该要被删除。但这些数据过期后并不会实时地马上被删除,当这些数据数量累积越来越多,就会占用很多内存,因此在redis底层同时使用了三种策略来删除这些数据。
1.定时删除
创建一个定时器,如果key超时了,由定时器任务立即执行对key的删除操作
优点:节约内存,超时就删除,快速释放不必要内存
缺点:CPU压力大,无论CPU是否负载过高,均占用CPU,会影响redis服务器的响应时间和吞吐量
总结:处理器性能换取存储空间
2.惰性删除
数据到达过期时间,不作处理,等下次访问该数据时
- 如果未过期,返回数据
- 如果过期则删除,返回不存在
内部调用expirelfNeeded()方法判断
优点:节约CPU性能,发现必须删除时才删除
缺点:内存压力很大,会出现长期占用内存的数据
总结:存储空间换取处理器性能
3.定期删除
周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
特点:
- CPU性能占用设置有峰值,检测频度可自定义设置
- 内存压力不是很大,长期占用内存的冷数据会被持续清理
- 周期性抽查存储空间(随机抽查、重点抽查)
定期删除流程
Redis启动服务器初始化时,读取配合server.hz的值,默认为10
每秒钟执行server.hz次serverCron()定时轮询,进而调用databasesCron()对各个库进行轮询,再执行activeExpireCycle()进行检查当个库
activeExpireCycle()对每个expire[*]逐一进行检测,每次执行250ms/server.hz
对某个expires[*]检测时,随机挑选W个key检测
- 如果一轮删除的key数量> W*25%,循环该过程(说明过期的数据比较多,需要继续删除)
- 如果一轮删除的key数量<=W*25%,检查下一个库,0-15之间轮询
W取值=ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP属性值(redis.conf中设置)
参数current_db用于记录activeExpireCycle()进入哪个expires[*]执行
如果activeExpireCycle()执行时间到期即对某个库扫描结束,下次从current_db继续向下执行
删除策略比对
删除策略 | 内存占用 | CPU |
---|---|---|
定时删除 | 节约内存,无占用 | 不分时段占用CPU,频度高 |
惰性删除 | 内存占用严重 | 延时执行,CPU利用率高 |
定期删除 | 内存定期随机清理 | 每秒花费固定的CPU资源维护内存 |
Redis过期数据的删除策略相关推荐
- redis对过期数据的删除策略
在redis中可以设置键的过期时间,对于过期键的删除策略有三种:定时删除.惰性删除.定期删除 定时删除 定时删除即立即删除,指在设置过期时间时创建一个定时器,在定时器到时间时,立即删除设置的键 ...
- Redis 过期键删除策略、内存淘汰机制
文章目录 过期键删除策略 定时删除 惰性删除 定期删除 Redis的选择 内存淘汰机制 redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期数据以节省内存,那redis是怎样怎 ...
- Redis三种删除策略
首先我们先说一下redis删除的是过期数据,而什么是过期数据呢?过期数据就是设置了有效性的数据到达了过期时间的数据. TTL指令获取数据状态 返回时间:具有时效性的数据 返回-1:表示永久有效的数据 ...
- [Redis] Resid的删除策略
目录 Redis中的数据特征 数据删除策略 2.1定时删除 2.2 惰性删除 2.3 定期删除 删除策略比对 Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据 ...
- Redis的数据删除策略
Redis的数据可以设置有效时间,当Redis数据失效时,Redis有多种机制来清除失效的数据. Redis 提供了三种删除策略:1. 定时删除 :2. 惰性删除 : 2. 定期删除. 定时删除 当 ...
- Redis 过期键删除策略
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:八个开源的 Spring Boot 学习资源,你值得拥有个人原创+1博客:点击前往,查看更多 作者:罗曼蒂克 链 ...
- 2022-04-12 redis过期key删除策略
1 定时删除: 在设置键过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作; 这样做有一个弊端,就是当有很多key同一时间过期的时候,会造成一时间的CPU紧张,从而可能影 ...
- Redis key的删除策略
问:Redis 删除key的方式有哪些? 答: (1) 定时删除:对Key创建定时器,定时器到期马上删除 这种方式相对比较耗费CPU,因为如果一段时间内key过期太多,一直删除影响性能. (2) 惰性 ...
- redis 数据删除策略
Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态,Redis 的数据删除策略,就是在内存和CPU中找一个平衡点,避免redis性能下降,甚至服务器宕机或者 ...
最新文章
- 转置卷积Transposed Convolution
- 根际微生物组提高植物耐盐性的研究进展(Biotechnology Advances IF=10)
- mysql 执行sql导出表格形式
- DEDE常见问题(转)
- 超图桌面版加载obj 3D模型
- VTK:多块数据集用法实战
- API接口设计 注意问题
- LeetCode 563. 二叉树的坡度(DFS)
- 量子通信入门相关书籍
- Django xadmin引入DjangoUeditor
- Fast Fourier Transform
- ubuntu 18.04,无线网卡无驱动,连不上wifi,显示wifi没有适配器的解决方法
- NYOJ--102--次方求模
- 比较重要的物料管理交易代码列表
- 版本控制工具--CVS
- 旁路电容和去偶电容Bypass and Decouple
- matlab怎么设置步长,请教matlab中怎么对变步长的数据进行处理
- 计算机组成原理区分正负数实验,计算机组成原理实验报告(4个).doc
- 东子破解修改oracle10g的最大连接数
- HorizontalScrollView 滑动处理