【Redis从头学-9】只需三张图,带你理解Redis中过期时间Key的删除策略

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis从头学-9】只需三张图,带你理解Redis中过期时间Key的删除策略

🌟前言


学过Redis的都知道,在设置key的时候,可以对其设置过期时间。那么其内部是采用何种删除策略,来对过期时间key进行删除呢?本文来具体介绍一下过期时间key的三种删除策略。


🌟概述


Redis中过期Key的删除策略有三种分别是定期删除策略、定时删除策略以及惰性删除策略。其中定期和定时删除策略为主动删除,惰性删除为被动删除。


分析:三种策略各有优缺点。无非是时间换空间来节省内存的浪费或者空间换时间来提高CPU性能。


策略名称 CPU性能方面 内存资源方面
定时删除 删除操作对CPU资源消耗较大,可能造成短暂的服务阻塞 不占用额外的内存资源
惰性删除 删除操作时对CPU资源消耗较小,相比定时删除更加高效 内存中的过期key占用资源,当内存不足时可能会导致Redis执行淘汰策略
定期删除 对CPU性能几乎没有影响,删除操作在后台线程进行,对服务影响较小。但是删除频率过高依旧会导致CPU性能下降。 不占用额外的内存资源,但可能导致内存中的过期key长时间未被删除的情况


🌟定期删除策略


定期删除策略:一段时间周期,随机抽取一些设置了过期时间的key,之后从中检查是否有过期key并进行删除。此策略为了时解决长时间不被访问的过期key的问题。


优点:可以通过周期时间,来减少CPU性能影响以及内存浪费。


缺点:定期删除策略因其需要周期性的轮询Redis数据库,以检查key是否过期,如果执行的太过频繁会对CPU性能造成影响;如果执行太过稀疏,则会对内存造成浪费。

配置:配置文件添加配置项。hz 10表示:一秒内执行10次。


hz 10


或者


config set hz 10


43f4834b310f8dc1963fece20734114d_eb524b7d824d4efc93a16234b1bd4a40.png


🌟定时删除策略


定时删除策略:在设置key的过期时间同时,创建一个定时器,当过期时间达到时,由定时器执行key的删除操作。


优点:可以及时的删除过期KEY。


缺点:如果过期KEY数量庞大,执行定时器会对CPU的性能造成影响。


8e964024f5ac0659cfea3caa931b5275_2b5ffc03a5d24a988b51882f81a116b9.png


🌟惰性删除策略


惰性删除:只有在获取键时判断Key是否过期。


优点:减少对CPU性能造成影响。


缺点:不能及时删除过期Key,造成内存浪费。

配置方法:


  1. 需要在redis.conf配置文件中添加配置项
lazyfree-lazy-eviction yes
  1. 使用config set命令
config set lazyfree-lazy-eviction yes


715547685d1fbf666de7567e8e13d18b_2b9640c2a7724da9a0f586004ad1a815.png


🌟适用场景分析


过期策略 适用场景 原因
定时删除 实时性要求高的场景 精确控制过期时间,确保及时删除过期key
惰性删除 对CPU和网络资源消耗敏感的场景 避免频繁检查和删除操作对CPU和网络资源造成的额外开销
定期删除 对实时性要求较低且拥有大量过期key的场景 较低的性能开销,适用于大规模系统中处理过期key的情况


🌟写在最后


有关于Redis中过期KEY删除策略到此就结束了。大家可以通过流程图,可以更好的理解三种删除策略。虽然引入了key的删除淘汰策略,但是为了解决内存紧张的问题,redis提出了内存淘汰策略,在下一节为大家进行分析。


感谢大家的阅读,希望大家在评论区对此部分内容散发讨论或者有什么不足之处还望提出。感谢大家!!!


相关实践学习
基于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
目录
相关文章
|
1月前
|
NoSQL Redis
Redis的数据淘汰策略有哪些 ?
Redis 提供了 8 种数据淘汰策略,分为淘汰易失数据和淘汰全库数据两大类。易失数据淘汰策略包括:volatile-lru、volatile-lfu、volatile-ttl 和 volatile-random;全库数据淘汰策略包括:allkeys-lru、allkeys-lfu 和 allkeys-random。此外,还有 no-eviction 策略,禁止驱逐数据,当内存不足时新写入操作会报错。
60 16
|
13天前
|
NoSQL 算法 Redis
redis内存淘汰策略
Redis支持8种内存淘汰策略,包括noeviction、volatile-ttl、allkeys-random、volatile-random、allkeys-lru、volatile-lru、allkeys-lfu和volatile-lfu。这些策略分别针对所有键或仅设置TTL的键,采用随机、LRU(最近最久未使用)或LFU(最少频率使用)等算法进行淘汰。
30 5
|
13天前
|
NoSQL 安全 Redis
redis持久化策略
Redis 提供了两种主要的持久化策略:RDB(Redis DataBase)和AOF(Append Only File)。RDB通过定期快照将内存数据保存为二进制文件,适用于快速备份与恢复,但可能因定期保存导致数据丢失。AOF则通过记录所有写操作来确保数据安全性,适合频繁写入场景,但文件较大且恢复速度较慢。两者结合使用可增强数据持久性和恢复能力,同时Redis还支持复制功能提升数据可用性和容错性。
36 5
|
1月前
|
消息中间件 缓存 NoSQL
Redis 高并发竞争 key ,如何解决这个难点?
本文主要探讨 Redis 在高并发场景下的并发竞争 Key 问题,以及较为常用的两种解决方案(分布式锁+时间戳、利用消息队列)。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Redis 高并发竞争 key ,如何解决这个难点?
|
1月前
|
存储 NoSQL Redis
Redis的数据过期策略有哪些 ?
Redis 采用两种过期键删除策略:惰性删除和定期删除。惰性删除在读取键时检查是否过期并删除,对 CPU 友好但可能积压大量过期键。定期删除则定时抽样检查并删除过期键,对内存更友好。默认每秒扫描 10 次,每次检查 20 个键,若超过 25% 过期则继续检查,单次最大执行时间 25ms。两者结合使用以平衡性能和资源占用。
45 11
|
26天前
|
存储 监控 NoSQL
Redis大Key问题如何排查?如何解决?
Redis大Key问题如何排查?如何解决?
59 0
Redis大Key问题如何排查?如何解决?
|
27天前
|
存储 NoSQL 算法
面试官:Redis 大 key 多 key,你要怎么拆分?
本文介绍了在Redis中处理大key和多key的几种策略,包括将大value拆分成多个key-value对、对包含大量元素的数据结构进行分桶处理、通过Hash结构减少key数量,以及如何合理拆分大Bitmap或布隆过滤器以提高效率和减少内存占用。这些方法有助于优化Redis性能,特别是在数据量庞大的场景下。
面试官:Redis 大 key 多 key,你要怎么拆分?
|
1月前
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
67 10
|
1月前
|
缓存 监控 NoSQL
Redis 缓存穿透及其应对策略
【10月更文挑战第23天】通过以上对 Redis 缓存穿透的详细阐述,我们对这一问题有了更深入的理解。在实际应用中,我们需要根据具体情况综合运用多种方法来解决缓存穿透问题,以保障系统的稳定运行和高效性能。同时,要不断关注技术的发展和变化,及时调整策略,以应对不断出现的新挑战。
51 4
|
2月前
|
NoSQL Unix Redis
Redis 键(key)
10月更文挑战第15天
35 1