【Redis】数据回收策略
2019-07-04 12:37
801 查看
Redis内存回收机制主要体现在以下两个方面:
- 删除到达时间的键对象。
- 内存使用达到maxmemory上限时触发内存溢出控制策略。
一 删除过期键对象
Redis采用惰性删除和定时任务删除机制实现过期键的内存回收
- 惰性删除
惰性删除用于当客户端读取带有超时属性的键时,如果已经超过键设置的过期时间,会执行删除操作并返回空。这样做回节省CPU,但是单独使用这种方式会导致内存长期不能得到及时释放,因为内存没有访问就得不到释放。 - 定时任务删除
Redis内部维护一个定时任务,默认每秒运行10次(通过配置hz控制)。定时任务中删除过期键逻辑采用了自适应算法,根据键的过期比例,使用快慢两种速率模式回收键。 定时任务在每个数据库空间随机检查20个键,当发现过期时删除对应的键。 - 超过检查数25%的键过期,循环执行回收逻辑直到不足25%或运行超时为止,慢模式下超时时间为25ms。
- 如果之前回收键逻辑超时,则在Redis触发内部事件之前再次以快模式运行回收过期键任务,快模式下超时时间为1ms且2s内只能运行1次。
- 慢两种模式内部删除逻辑相同,只是执行的超时时间不同。
二 内存使用达到maxmemory上限时触发内存溢出控制策略
当内存不足以容纳新写入数据时,Redis支持6种策略来移除key:
- noeviction 默认策略,新写入操作会报错,这个不太好
- allkeys-lru 在键空间中,移除最近最少使用的 Key。推荐使用
- allkeys-random 在键空间中,随机移除某个 Key
- volatile-lru 在设置了过期时间的键空间中,移除最近最少使用的 Key
- volatile-random 在设置了过期时间的键空间中,随机移除某个 Key
- volatile-ttl 在设置了过期时间的键空间中,有更早过期时间的 Key 优先移除。
相关文章推荐
- Redis(二):数据回收策略、持久化原理、事务、主从复制
- 关于Redis数据过期策略
- Redis的内存回收机制和内存过期淘汰策略详解!
- Redis数据过期和淘汰策略详解
- Redis(1)--基础知识,数据类型,过期键删除策略
- Redis 5种数据类型,2种特殊数据处理策略
- 深入剖析 redis 数据淘汰策略
- Redis数据过期策略探究
- 深入剖析 redis 数据淘汰策略
- redis数据淘汰策略
- Redis数据过期策略探究
- redis数据过期策略【转】
- Redis备份及回收策略
- 深入理解Redis数据淘汰策略
- 关于Redis数据过期策略
- 深入剖析 redis 数据淘汰策略
- Redis 的过期策略以及内存回收机制
- redis 系列15 数据对象的(类型检查,内存回收,对象共享)和数据库切换
- Redis 数据结构与内存管理策略(上)
- Redis 数据过期策略