当前位置: 首页 > news >正文

【redis】redis内存管理,过期策略与淘汰策略

一:Redis 的过期删除策略及处理流程如下:

1. 过期删除策略

Redis 通过以下两种策略删除过期键:

1.1 惰性删除
  • 触发时机:当客户端访问某个键时,Redis 会检查该键是否过期。
  • 执行流程
    1. 客户端请求访问键。
    2. Redis 检查键的过期时间。
    3. 如果键已过期,Redis 删除该键并返回空;如果未过期,返回键值。
1.2 定期删除
  • 触发时机:Redis 定期随机抽取部分键检查是否过期。
  • 执行流程
    1. Redis 从设置了过期时间的键中随机抽取一部分。
    2. 检查这些键是否过期。
    3. 删除已过期的键。
    4. 如果过期键比例超过一定阈值,重复该过程。

2. 处理流程

Redis 处理过期键的流程结合了惰性删除和定期删除:

  1. 客户端访问

    • 客户端请求访问键时,Redis 先检查键是否过期,若过期则删除并返回空。
  2. 定期检查

    • Redis 定期随机抽取部分键检查过期情况,删除已过期的键。
    • 如果过期键比例较高,继续检查更多键。
  3. 内存回收

    • 通过惰性删除和定期删除,Redis 逐步回收过期键占用的内存。

3. 配置参数

  • hz:控制定期删除的频率,默认 10,表示每秒执行 10 次检查。
  • maxmemory-samples:设置每次检查时随机抽取的键数量,默认 5。

4. 总结

  • 惰性删除:在访问时检查并删除过期键。
  • 定期删除:定期随机检查并删除过期键。

这两种策略共同确保 Redis 高效管理内存,避免过期键占用过多资源。
在 Redis 中,缓存淘汰策略过期策略 是两种不同的机制,但它们共同作用于缓存数据的管理。以下是对 LRULFU 缓存淘汰策略的区别,以及它们与过期策略的应用场景的详细解读。


二、缓存淘汰策略:LRU 和 LFU 的区别

1. LRU(Least Recently Used,最近最少使用)

  • 原理:优先淘汰最近最少被访问的数据。
  • 实现方式:Redis 使用近似 LRU 算法,通过随机采样一部分键,从中淘汰最近最少使用的键。
  • 特点
    • 关注数据的访问时间。
    • 适合访问模式有明显热点数据的场景。
  • 适用场景
    • 热点数据缓存(如新闻、社交媒体热门内容)。
    • 需要保留最近访问数据的场景。

2. LFU(Least Frequently Used,最不常用)

  • 原理:优先淘汰访问频率最低的数据。
  • 实现方式:Redis 记录每个键的访问频率,淘汰访问次数最少的键。
  • 特点
    • 关注数据的访问频率。
    • 适合访问模式较为均匀的场景。
  • 适用场景
    • 访问频率差异较大的场景(如推荐系统、广告系统)。
    • 需要保留高频访问数据的场景。

3. LRU 和 LFU 的区别

特性LRULFU
关注点数据的访问时间数据的访问频率
适用场景有明显热点数据的场景访问频率差异较大的场景
优点简单高效,适合短期热点数据更精准,适合长期高频数据
缺点可能误删高频但近期未访问的数据需要额外记录访问频率,开销较大

三、缓存淘汰策略与过期策略的结合应用

在实际应用中,缓存淘汰策略和过期策略通常需要结合使用,以满足不同的业务需求。

1. 热点数据缓存

  • 过期策略:为热点数据设置较长的过期时间。
  • 淘汰策略:使用 allkeys-lru,优先保留最近访问的热点数据。
  • 场景:新闻、社交媒体热门内容。

2. 临时数据缓存

  • 过期策略:为临时数据(如验证码、会话)设置较短的过期时间。
  • 淘汰策略:使用 volatile-ttl,优先淘汰即将过期的数据。
  • 场景:验证码、会话缓存。

3. 冷数据清理

  • 过期策略:为冷数据设置过期时间。
  • 淘汰策略:使用 volatile-lfu,优先淘汰访问频率低的冷数据。
  • 场景:历史数据、低频访问数据。

4. 不允许数据丢失的场景

  • 过期策略:不设置过期时间,或设置较长的过期时间。
  • 淘汰策略:使用 noeviction,确保数据不被淘汰。
  • 场景:金融、交易系统。

四、总结

1. LRU 和 LFU 的选择

  • 如果业务有明显的热点数据,选择 LRU
  • 如果业务需要关注数据的访问频率,选择 LFU

2. 过期策略的选择

  • 如果数据有明确的生命周期,设置 过期时间
  • 如果需要及时清理过期键,启用 定期删除

3. 结合使用

  • 根据业务特点,合理配置 缓存淘汰策略过期策略,以优化 Redis 的性能和资源利用率。

通过合理选择策略,可以有效提升 Redis 的缓存命中率和系统性能。

相关文章:

  • QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)
  • 【深度学习】Transformer 的常见的位置编码有哪些
  • 4. MySQL 逻辑架构说明
  • k8s集群部署
  • 深入解析JVM垃圾回收机制
  • podman加速器配置,harbor镜像仓库部署
  • QT(5.15)之QGC(4.4)安装教程
  • springboot3整合knife4j详细版,包会!(不带swagger2玩)
  • 讯飞离线唤醒+离线Vosk识别+DeepSeek大模型+讯飞离线合成持续优化,无限可能~
  • 【Qt】可爱的窗口关闭确认弹窗实现
  • ZT9 游游的字母翻倍
  • 开源AI网络爬虫工具Crawl4AI
  • vue3学习--Vue3与2的区别
  • 分布式服务配置中心
  • STM32-智能台灯项目
  • 游戏开发 游戏开始界面
  • 美颜相机1.0
  • 神经网络八股(1)
  • Docker 镜像加速:告别龟速,畅享飞速下载!
  • discuz3.5 回复 浮动窗口无法弹出
  • 成都网站设计 冠辰/2023疫情第三波爆发时间
  • 国内好的vps/seo词库排行
  • 网站建设功能/b站推广网站入口
  • 网站关键词做排名不分/外链工具下载
  • 拆分网站开发/怎么弄一个网站
  • 宜昌百度网站建设/自动点击器怎么用