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

Redis 的内存回收策略

Redis的内存回收策略用于处理过期数据和内存溢出情况,确保系统稳定性和性能。作为一个高性能的键值存储系统,它通过内存回收策略来维护内存的高效使用

主要包括过期删除策略和内存淘汰策略

过期删除策略

Redis的过期删除策略是通过设置键的过期时间来实现的。在Redis中,每个键都有一个关联的过期时间字段,用于表示该键的过期时间。

当一个键被创建时,可以通过设置其过期时间来指定其在何时自动删除。过期时间可以是一个绝对时间戳(Unix时间戳),也可以是相对于当前时间的秒数。

以下是一些常见的设置键过期时间的命令:

  1. EXPIRE key seconds:将键key的过期时间设置为seconds秒后。
  2. SETEX key seconds value:将键key的值设置为value,并设置其过期时间为seconds秒后。
  3. PEXPIRE key milliseconds:将键key的过期时间设置为milliseconds毫秒后。
  4. PSETEX key milliseconds value:将键key的值设置为value,并设置其过期时间为milliseconds毫秒后。
  5. PERSIST key:移除键key的过期时间,使其永久保存。
  • 定时删除:为设置过期时间的键创建定时器,到期时立即删除。
  • 惰性删除:在访问键时检查是否过期,如果过期则删除。
  • 定期删除:Redis会周期性地对数据库进行检查并删除找到的过期键。

内存淘汰策略(maxmemory-policy):

当Redis使用的内存达到maxmemory限制时,为了防止内存使用过度,需要有一种机制来决定哪些数据应当被优先淘汰以释放内存空间。Redis提供了多种内存淘汰策略供用户选择,这些策略根据不同的场景和需求进行设计,具体包括:

  1. noeviction(默认:不进行数据淘汰。当内存不足以容纳新写入数据时,新写入操作会返回错误。
  2. allkeys-lru:从所有键中选择最少使用的键淘汰。这个策略会通过LRU(Least Recently Used)算法来确定要淘汰的数据。
  3. volatile-lru:只从设置了过期时间的键中选择最少使用的键淘汰,也是基于LRU算法。
  4. allkeys-random:随机从所有键中选择数据淘汰。
  5. volatile-random:随机从设置了过期时间的键中选择数据淘汰。
  6. volatile-ttl:选择那些即将过期的键进行淘汰。

此外,在Redis 4.0版本之后,新增了两种基于LFU(Least Frequently Used)算法的淘汰策略:

  1. volatile-lfu:根据访问频率从设置了过期时间的键中选择最不常用的键淘汰。
  2. allkeys-lfu:根据访问频率从所有键中选择最不常用的键淘汰。

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

相关文章:

  • 小程序富文本图片宽度自适应
  • 安装redis时候修改过的配置文件
  • Stable Diffusion 本地部署教程
  • sql如何增加数据
  • 智慧交通(代码实现案例)
  • LeetCode 面试经典150题 205.同构字符串
  • 存内计算:释放潜能的黑科技
  • CentOS Stream 8系统配置阿里云YUM源
  • MySQL Explain 优化参数详细介绍
  • 代码随想录Day58:每日温度、下一个更大元素 I
  • 冒泡排序 快速排序 归并排序 其他排序
  • 阿里云服务器安装MySQL(宝塔面板)
  • 设计模式|发布-订阅模式(Publish-Subscribe Pattern)
  • 根据疾病名生成病例prompt
  • HarmonyOS网格布局:List组件和Grid组件的使用
  • NASA数据集—— 1984-2019年湖泊生长季绿色表面反射率趋势数据集
  • DMA知识
  • Linux 系统 docker快速搭建PHP环境
  • 逻辑设计问题 -- 设计一个函数
  • RHCE 补充:判断服务状态
  • 计算机网络:物理层 - 编码与调制
  • 《量子计算:揭开未来科技新篇章》
  • 机器人机械手加装SycoTec 4060 ER-S电主轴高精密铣削加工
  • docker 共享内存不足问题
  • 英语口语 3.27
  • pytest之统一接口请求封装
  • 使用npm仓库的优先级以及.npmrc配置文件的使用
  • Netty源码剖析——ChannelHandlerContext 篇(三十七)
  • 5.92 BCC工具之bitesize.py解读
  • jupyter notebook导出含中文的pdf(LaTex安装和Pandoc、MiKTex安装)