Redis 怎样处理过期键

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 怎样处理过期键

@[toc]

Redis的过期键的过期时间都保存在过期字典中,过期键的删除策略有三种,分别是==定时删除==、==惰性删除==和==定期删除==。

定时删除

定时删除策略,是指在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间到的时候,立即执行对键的删除操作。
==定时删除策略的优点==
对内存友好,通过定时器可以保证过期键能尽可能快地被删除,并释放过期键占用的空间。
==定时删除策略的缺点==
1.对CPU不友好。在过期键较多的情况下,删除过期键可能会占用相当一部分的CPU执行时间。在内存不紧张而CPU紧张的情况下,将CPU资源用在删除和当前任务无关的过期键上,无疑也会对服务器的响应时间和吞吐量造成影响。
2.创建定时器需要Redis服务器中的时间事件,而现在时间事件的实现方式是无序链表,查找一个事件的事件复杂度为O(N),并不能高效地处理大量时间事件。

惰性删除

惰性删除策略,是指放任键过期不管,每次从键空间获取键的时候才去检查取得的键是否过期,如果过期的话,就删除该键,如果不过期,就返回该键。
==惰性删除策略的优点==
对CPU友好,程序只在取出键时才对键进行过期检查,删除的目标进行预当前处理的键。
==惰性删除策略的缺点==
惰性删除策略对内存不友好,当数据库中有大量的过期键,而这些键又没有被访问到,那么它们可能因为永远都不会被进行过期检查而被删除。

定期删除

定期删除策略,是指每隔一段时间,程序就会对数据库进行一次检查,删除里面的过期键。至于删除多少过期键,以及检查多少数据库,都由算法来决定。这种策略是前面两种删除策略(定时删除、惰性删除)的一种折衷,它会通过限制操作执行的时长和频率来减少删除操作对CPU执行时间的影响,而确定删除策略的时长和频率就是主要难点。
==定期删除策略的难点==
1.如果删除操作太频繁,或者执行时间过长,定期删除策略就会退化成定时删除策略。
2.如果删除操作执行得太少,或者执行时间太短,定期删除策略又会和惰性删除策略一样,出现内存浪费的现象。

总结
这三种策略,第一种策略(定时删除)和第三种策略(定期删除)可以归类为主动删除策略,第二种策略(惰性删除)则是被动删除策略。Redis服务器实际使用的是惰性删除+定期删除两种策略的一个配合使用。通过这两种策略的配合使用,服务器就可以很好地在【合理使用CPU时间】和【避免浪费内存空间】之间取得平衡。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
存储 NoSQL Redis
04- Redis的数据过期策略有哪些 ?
Redis的数据过期策略包括**惰性删除**和**定期删除**。惰性删除在取出key时检查是否过期,节省CPU但可能延迟清理。定期删除则每隔一定时间删除一批过期key,通过限制操作频率减少CPU影响。默认每秒扫描10次,随机抽取20个键,若25%已过期则继续检查,最大执行时间25ms。Redis使用这两种策略的结合以平衡内存和CPU使用。
56 1
|
7月前
|
NoSQL Redis 数据库
Redis的过期键是如何处理的?
【4月更文挑战第3天】Redis过期键处理采用被动删除和主动删除策略。被动删除在客户端访问时检查并删除过期键,节省CPU但可能导致键占用内存。主动删除包括定时和周期性删除,确保即使无客户端访问也能及时清理,但可能增加CPU开销。实际操作中,两者结合使用以平衡内存和CPU资源。
60 1
|
7月前
|
存储 NoSQL Redis
【Redis】Redis如何实现key的过期删除
【Redis】Redis如何实现key的过期删除
|
5月前
|
canal 缓存 NoSQL
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;先删除缓存还是先修改数据库,双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
|
5月前
|
监控 NoSQL Redis
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
|
7月前
|
存储 NoSQL Java
熟悉Redis吗,那Redis的过期键删除策略是什么
对于Redis,我们业务开发一般都只关心Redis键值对的查询、修改操作,可能因为懒或者只想能用就行,呵呵。很少关心键值对存储在什么地方、键值对过期了会怎么样、Redis有没什么策略处理过期的键、Redis处理过期键又有什么作用?但这些问题却是Java程序员在Redis上进阶的必备知识,不要埋怨Java要学习的系统知识为什么这么多,因为这些确确实实是进阶的程序员所必须掌握的。我们往下看看~
熟悉Redis吗,那Redis的过期键删除策略是什么
|
6月前
|
存储 缓存 NoSQL
redis的过期淘汰策略
只能存储 20w 条数据,那肯定要保证redis存储的都是热点数据,即:被频繁访问到的数据;并且要保证Redis的内存能够存放20w数据,要计算出Redis内存的大小。
54 0
|
7月前
|
存储 缓存 NoSQL
Redis入门到通关之Redis内存淘汰(内存过期)策略
Redis入门到通关之Redis内存淘汰(内存过期)策略
118 3
|
7月前
|
缓存 NoSQL 算法
【Redis系列笔记】内存淘汰及过期删除
Redis是一个内存键值对数据库,所以对于内存的管理尤为重要。Redis内部对于内存的管理主要包含两个方向,过期删除策略和数据淘汰策略。内存淘汰策略指在Redis内存使用达到一定阈值的时候,执行某种策略释放内存空间,以便于接收新的数据。数据过期删除策略是指在数据的有效时间到期后,如何从内存中删除这些数据的规则。
171 0