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
    不进行移除,针对写操作,只返回错误信息
相关推荐
itmrl4 小时前
Redis高可用方案之哨兵模式搭建
redis
懂得节能嘛.6 小时前
【Java动态线程池】Redis监控+动态调参
java·开发语言·redis
凌寒118 小时前
Linux(Debain)安装Redis、数据迁移
linux·运维·服务器·redis
⑩-8 小时前
基于Redis Lua脚本的秒杀系统
java·redis
三翼鸟数字化技术团队9 小时前
基于redis的多资源分布式公平锁的设计与实践
redis·后端
h***34639 小时前
Redis安装教程(Windows版本)
数据库·windows·redis
3***g20510 小时前
如何使用Spring Boot框架整合Redis:超详细案例教程
spring boot·redis·后端
a***131410 小时前
redis存取list集合
windows·redis·list
toooooop810 小时前
CentOS 7 系统上安装 **Nginx + MySQL 5.7 + PHP 7.3 + Redis** 的完整步骤
redis·mysql·nginx·centos·php7
b***653216 小时前
【解决】RESP.app GUI for Redis 连接不上redis服务器
服务器·redis·github