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
    不进行移除,针对写操作,只返回错误信息
相关推荐
wefg119 小时前
【Redis】初识 Redis
数据库·redis·缓存
周之瑞21 小时前
技术手记|Redis 与数据库事务不在一个世界:afterCommit、显式补偿还是 Canal?
redis
hacker_LeeFei21 小时前
Windows 下配置 Redis 8.10.2 开机自启:一次踩坑全记录
数据库·windows·redis
zl_dfq1 天前
Redis 之 【持久化 与 事务】
数据库·redis
白露与泡影1 天前
Redis 的“单线程”与“多线程”:一场关于性能与简洁的权衡
数据库·redis·php
行百里er1 天前
Redis 性能优化——内存、慢查询、Big Key 与 Hot Key
redis·后端
yexianglunbai1 天前
Redis 缓存详解:从原理到实战
数据库·redis·缓存
逃逸线LOF1 天前
Redis快速入门
数据库·redis·缓存
j7~1 天前
【Redis初阶】(篇二)《一文吃透 Redis:特性、应用场景、版本演进与安装配置全解析》
数据库·redis·缓存·redis的特性·redis的主要应用场景·redis重要文件及其作用·安装并启动redis
JavaEdge.1 天前
Redis 连接断开后的自动重连操作
spring boot·redis·后端·lettuce·tcp keepalive