Redis: 内存回收

文章目录

一、过期键删除策略

1、惰性删除

顾名思义并不是在TTL到期后就立即删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除,并且删除的目标仅限于当前处理的键。

  • 优点:节约cpu性能,使用时发现过期键才删除。
  • 缺点:如果过期键不被访问,就不会被删除,会一直保留在内存中,存在内存泄漏的风险。

2、定时删除

创建一个定时器(timer),当将过期时立即对该键进行删除操作。

  • 优点:对内存友好,过期的键会立即删除。
  • 缺点:对CPU时间不友好,当某一时刻处在大量的键过期,那么CPU的大部分时间就会在处理删除过期键上,会对服务器的响应时间和吞吐量产生影响。

3、定期删除

每隔一段时间执行一次删除过期键操作,并通过限制执行时长和频率来减少对CPU时间的影响。

  • 难点:很难确定执行时长和频率的取值

4、Redis的过期键删除策略

使用惰性删除+定期删除策略,使得CPU时间和内存使用可以取得平衡。

二、内存淘汰策略

1、设置过期键的内存淘汰策略

  • volatile-lru
    使用LRU算法移除key,只对设置了过期时间的键(最近最少使用)。
  • volatile-random
    在过期集合中移除随机的key,只对设置了过期时间的键。
  • volatile-ttl
    移除那些TTL值最小的key,即那些最近要过期的key。

2、全库键的内存淘汰策略

  • allkeys-lru
    在所有集合key中,使用LRU算法移除key
  • allkeys-random
    在所有集合key中,移除随机的key
  • noeviction
    不进行移除,针对写操作,只返回错误信息
相关推荐
Hellyc1 小时前
用户查询优惠券之缓存击穿
java·redis·缓存
鼠鼠我捏,要死了捏4 小时前
缓存穿透与击穿多方案对比与实践指南
redis·缓存·实践指南
天河归来8 小时前
springboot框架redis开启管道批量写入数据
java·spring boot·redis
守城小轩8 小时前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis
Charlie__ZS9 小时前
若依框架去掉Redis
java·redis·mybatis
汤姆大聪明10 小时前
Redis 持久化机制
数据库·redis·缓存
钩子波比11 小时前
🚀 Asynq 学习文档
redis·消息队列·go
也许明天y12 小时前
Spring Cloud Gateway 自定义分布式限流
redis·后端·spring cloud
kk在加油13 小时前
Redis数据安全性分析
数据库·redis·缓存
都叫我大帅哥16 小时前
🔥 Redis缓存击穿:从“崩溃现场”到“高并发防弹衣”的终极指南
redis