首页 > 数据库 >Redis过期策略

Redis过期策略

时间:2024-10-23 12:42:21浏览次数:6  
标签:缓存 策略 删除 过期 Redis 内存

一、概述

Redis的过期策略主要是用来管理带有过期时间的键,以确保内存能够得到高效利用,并避免保存不再需要的数据。

这种设计既能减少不必要的内存占用,又能提高系统的整体性能。

二、实现方式

过期策略有两种主要实现方式:

1、惰性删除 (Lazy Deletion)

  • Redis 只有在访问键时才会检查其是否已经过期。如果该键已经过期,则会在访问时删除它。
  • 优点:惰性删除不会占用额外的 CPU 资源进行检查,只在键被访问时才进行处理。
  • 缺点:如果键从未被访问,过期的数据将一直保留在内存中,导致内存浪费。

2. 定期删除(Periodic Deletion)

  • Redis 会定期随机抽取一部分带有过期时间的键进行检查,并删除已经过期的键。这个操作默认每秒执行 10 次。
  • 可以通过配置文件 hz 参数来调整检查频率,增大频率会更积极地清理过期键,但也会增加 CPU 的负载。
  • 优点:这种方式可以在后台清理一些过期数据,减少内存浪费。
  • 缺点:由于是抽样检查,可能会遗漏部分过期键,尤其是在过期键数量较多的情况下。

三、Redis过期策略配置

Redis 提供了一些参数来控制过期策略的行为,例如 maxmemory-policy 用于指定当达到最大内存时的缓存淘汰策略,而 hz 参数则控制定期删除的检查频率。

可以在 redis.conf 文件中设置:

hz 10  # 设置每秒检查的频率

四、Redis过期策略和Redis缓存淘汰策略区别

二者区别可以从两个方面来看:

1、核心关注点

  • 过期策略:专注于管理带有过期时间的键。它确保这些键在过期后能被及时删除,但并不能保证内存始终有足够空间。若达到最大内存限制,依然可能出现内存满的情况。
  • 缓存淘汰策略:在内存满时负责管理内存空间,决定哪些数据应被删除,以腾出空间给新数据。

2、内存管理的主动性

  • 主动删除:过期策略属于主动删除。这里”主动“指的是Redis会主动检查和删除过期的键。
  • 被动删除:缓存淘汰策略属于被动删除。这里”被动“指的是Redis达到最大内存限制时,它会被动地根据配置的淘汰策略删除某些键 。此时的缓存淘汰是为了解决内存不足问题。

总结: 在实际应用中,这两种策略是相辅相成的。过期策略可以帮助管理动态数据的生命周期,而缓存淘汰策略则在内存紧张时发挥作用,确保 Redis 系统的稳定性。

标签:缓存,策略,删除,过期,Redis,内存
From: https://www.cnblogs.com/Oct16/p/18496125

相关文章

  • 邮件群发营销:提升打开率与转化率的策略!
    邮件群发营销的注意事项?如何避免营销邮件进垃圾箱?无论是品牌推广、产品促销还是客户关系管理,邮件群发营销都是不可或缺的工具。如何提升邮件的打开率和转化率成为了每个营销人员面临的挑战。MailBing将深入探讨如何通过有效的策略来提升邮件群发营销的效果。邮件群发营销:受......
  • 隨筆20241023 粘性分区策略及其应用案例
            在大规模数据处理系统中,分区策略的选择对数据的流动性和系统性能至关重要。粘性分区策略(StickyPartitioning)是一种常见的策略,其核心理念是在尽量保持数据顺序的前提下,合理地分配数据到各个分区,以实现负载均衡和提高系统性能。粘性分区策略的工作原理初始数......
  • 创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多
     ......
  • 告别满屏的if/else,用了策略模式后让你的代码更优雅
    你还在写满屏的if/else/switch之类的判断逻辑吗?博主在开发人员的代码中看过太多这样的低级代码了,真的太low,极不好维护,本文博主就教你如何用策略模式干掉if/else/switch,让你的代码更优雅。什么是策略模式?比如说对象的某个行为,在不同场景中有不同的实现方式,这样就......
  • phpstudy php8.2.9 redis使用
    1、卸载8.22、安装8.23、先开启redis缓存4、设置缓存内存大小5、把所有扩展放在C:\php\ext(复制:D:\phpstudy_pro\Extensions\php\php8.2.9nts\ext到C:\php\ext)6、把redis.dll复制进C:\php\ext(下载路径:https://downloads.php.net/~windows/pecl/releases/redis/6.0.2/php_red......
  • [技巧] 联考策略 2024.10.22
    (2024.10.22;我目前的水平)题目难度&我目前的水平T1:应当较快地做出来。但我目前很可能会在T1上花非常多时间(2h;最近两场考试);甚至做不出T1。T2:应当做出来。思维难度也许比T1低(最近两场考试),但可能还是T1要简单一些(毕竟[机房里T1得分比T2高些](?))。T3:可以尝试写部分分&......
  • Redis Quicklist 竟让内存占用狂降50%?
    0引言Redis作为一种高效的内存型键值数据库,得益于其底层数据结构的精妙设计。对于List类型的数据,Redis从早期的简单链表(linkedlist),到压缩列表(ziplist),再到如今的quicklist和listpack,不断优化以平衡内存利用率和性能。这篇文章将深入剖析Redis的quicklist和listpack......
  • Redis 的位图(Bitmap)设计签到系统
    在使用Redis的位图(Bitmap)实现签到系统时,可以通过字符串的位定位(bitposition)来记录用户的签到状态。这是一种高效的存储和检索方式,因为你可以在一个字符串中使用位来表示二进制状态,通常每一位(bit)代表一个用户或一天的状态。以下是如何实现签到系统的思路:设计数据结构:每个用户......
  • 怎么给docker的redis设置密码
    怎么给docker的redis设置密码设置密码方式1:启动容器时设置dockerrun-itd--nameredis-v1-p6379:6379redis--requirepass123456说明:--name(启动容器的名称)-p宿主机映射端口:容器里的redis启动端口--requirepass启动密码设置密码方式2:修改配置文件1.......
  • Redis的持久化存储和集群管理操作
    Redis的持久化存储和集群一、引言Redis是一个开源的内存数据结构存储系统,被广泛应用于缓存、消息队列、排行榜等场景。然而,由于数据存储在内存中,一旦服务器重启或出现故障,数据就会丢失。为了解决这个问题,Redis提供了两种持久化存储方式:RDB(RedisDatabase)和AOF(AppendOnly......