当前位置: 首页 > 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 的缓存命中率和系统性能。

http://www.lryc.cn/news/542040.html

相关文章:

  • RabbitMQ学习—day6—死信队列与延迟队列
  • seacmsv9联合注入数据以及绕过 ORDERBY
  • day58 第十一章:图论part08
  • 网络安全-openssl工具
  • Java面试第六山!《MySQL基础知识点》
  • 云计算中的API网关是什么?为什么它很重要?
  • 【WebGL】fbo双pass案例
  • Unity面板介绍_层级面板(23.1.1)
  • 详解Nginx 配置
  • 数据库系统概念
  • 51单片机学习之旅——定时器
  • 一台服务器将docker image打包去另一天服务器安装这个镜像
  • QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)
  • 基于SpringBoot的校园消费点评管理系统
  • 【小沐学Java】VSCode搭建Java开发环境
  • 《操作系统 - 清华大学》8 -4:进程管理:进程控制结构
  • RPC 框架项目剖析
  • C++ Boost面试题大全及参考答案
  • 关于Transparent native-to-ascii conversion
  • js数据类型检测
  • go 模块管理
  • 记一次复杂分页查询的优化历程:从临时表到普通表的架构演进
  • 基于 Python 的项目管理系统开发
  • java面试场景问题
  • JS宏实例:数据透视工具的制作(四)
  • 5. Go 方法(结构体的方法成员)
  • 20250223学习记录
  • WPS携手DeepSeek:开启智能办公新时代
  • 无需服务器,浏览器跑700+AI模型?!
  • WSL2下ubuntu开启NFS服务