Redis的内存回收原理,及内存过期淘汰策略详解

内核内存回收原理简介 页框回收与交换 概念 内核在为进程服务的过程中会分配大量的页,但是这些页对应的虚拟地址在进程的生命周期里一直会被断断续续的访问,所以当内核同时为大量进程服务时,内存终究会耗尽。所有页框回收就是在内核未耗尽内存之前(因为回收与交换也会使用内存),将在使用过程标记未访问不频繁的部分内存换出到磁盘,释放所占用的内存补给系统,以维持内核的正常运转,待被换出的页对应的虚拟地址再次被访问时,内核又通过缺页系统... 阅读详情

Redis内存回收机制

Redis的内存回收主要围绕以下两个方面:

1.Redis过期策略:删除过期时间的key值

2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据

Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。

Redis过期策略

过期策略通常有以下三种:
1.定时过期

每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。

2.惰性过期

只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。

3.定期过期

每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。

Redis中同时使用了惰性过期和定期过期两种过期策略。

Redis淘汰策略

1.简介

Redis的内存淘汰策略,是指当内存使用达到maxmemory极限时,需要使用LAU淘汰算法来决定清理掉哪些数据,以保证新数据的存入。

2、LRU算法

Redis默认情况下就是使用LRU策略算法。

LRU算法(least RecentlyUsed),最近最少使用算法,也就是说默认删除最近最少使用的键。

但是一定要注意一点!redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取3个键,删除这三个键中最近最少使用的键。

那么3这个数字也是可以可以设置采样的大小,如果设置为10,那么效果会更好,不过也会耗费更多的CPU资源。对应位置是配置文件中的maxmeory-samples。

3.缓存清理配置

maxmemory用来设置redis存放数据的最大的内存大小,一旦超出这个内存大小之后,就会立即使用LRU算法清理掉部分数据。

对于64 bit的机器,如果maxmemory设置为0,那么就默认不限制内存的使用,直到耗尽机器中所有的内存为止;,但是对于32 bit的机器,有一个隐式的闲置就是3GB

4.Redis数据淘汰策略

maxmemory-policy,可以设置内存达到最大闲置后,采取什么策略来处理。

对应的淘汰策略规则如下:

file

image.png

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。

2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。

3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。

4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。

5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。

6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

5.缓存清理的流程

1)客户端执行数据写入操作

2)redis server接收到写入操作之后,检查maxmemory的限制,如果超过了限制,那么就根据对应的policy清理掉部分数据

3)写入操作完成执行。

总结

redis的内存淘汰策略用于处理内存不足时的需要申请额外空间的数据,内存淘汰策略的选取并不会影响过期的key的处理。过期策略用于处理过期的缓存数据。

欢迎添加小编的Java学习群,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2019年最新的Java资料和0基础入门教程视频,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑

file

本文由博客一文多发平台 OpenWrite 发布!

抖音直播行为规范考试 阅读详情

相关推荐

Xilinx HydraMini试玩教程

HydraMini是Xilinx推出的基于Pynq-Z2开发板的自动驾驶开发小车,其有着简单易学、高灵活性、高扩展性、高性能等优良特性,是研究人员和学生进入自动驾驶领域的一个平台。本教程会通过最基础的讲解和步骤带领读者熟悉这个平台的基本开发流程。

qq_25762163的博客 1773

Linux内存分配与回收——伙伴算法

在Linux系统中,内存的分配与回收速率直接影响系统的存取效率。当内核频繁请求和释放不同大小的一组连续页框时,会导致许多外部空闲碎片,造成空间的浪费。使用伙伴算法可以有效地缓解该问题。伙伴关系机制是操作系统中的一种动态存储管理算法。在进行内存分配时,该算法通过不断平分较大的空闲内存块来获得较小的空闲内存块,直到获得所需要的内存块;在进行内存回收时,该算法尽可能地合并空闲块。

Reticent_Man的博客 5231

GR00TN1.7国内本地下载+模型下在+hugingface无法连接,本地模型下载

GR00TN1.7

alsj123456的博客 99

Linux - 内存、swap、内存回收机制

内存 xxxxxxxxxxxxxxxxxxx

LawssssCat的博客 2834

从仿真到实机:四足机器人控制算法的全流程验证框架

本文系统阐述了四足机器人从仿真到实机的全流程验证框架。针对仿真与实机环境的巨大差异,文章详细介绍了在MuJoCo等高保真仿真环境中的建模、算法迭代与压力测试方法,并重点解析了通过硬件抽象层和中间件搭建通往实机的关键桥梁。最后,提供了实机部署的安全清单与调试策略,旨在帮助开发者构建可重复、风险可控的算法验证闭环,提升算法在真实世界中的鲁棒性与可靠性。

lilh34434的博客 384

分位数回归和stata

分位数回归与stata 找了半天也没找到我想看的那种完整点的stata教程,只好自己写一个了… 参考教材:《用STATA学微观计量经济学》&《高级计量经济学及STATA应用_第2版》 第一部分 纯理论 更加详细的百度吧,很长很长,这里主要是拿来和ols比较。ols是均值回归,求解的方法是残差的平方最小,而这里就是对残差的绝对值用分位数做惩罚。(思想了解一下即可) 第二部分 Stata...

Joycezzz的博客 1万+

面试题 java垃圾回收机制

前几天面试的时候被问到垃圾回收机制的时候,心里还庆幸这个之前看过,可是答完后就傻了,面试官竟然问还有没有。 好吧,我一直以为面试官是懂我说什么的,加上说的有点快,有点乱,很多东西都省略掉了,估计是我省略掉的被认为是我不懂的了。 所以组织一下语言,下次尽量说的清楚一点。。 内存回收机制: 内存回收就是释放掉在内存中已经没用的对象。 首先,要判断怎样的对象是没用的对象。这里有2种方法

q291611265的专栏 1万+

DSI3协议介绍

分布式系统接口(DSI)是一种通用且功能强大的总线协议,旨在将多个遥感器和执行器设备互连到中央控制模块。该网络的主要目标应用是汽车安全系统。这种应用的一些特点是需要低成本、高鲁棒性、中速互连,仅限于两根导线。此外,它必须具有故障安全性、确定性和良好的EMC特性。即使具有所有级别的智能和可编程性的设备都可以连接到网络,远程设备也必须能够通过简单的状态机实现。由于模块尺寸非常重要,因此中央模块和远程单元中的最小组件至关重要。

汽车电子软件领域知识分享 1万+

内存回收机制

内存回收的方式 直接回收:发生内存分配,而此时的剩余空闲内存不足时,会执行立即内存回收。 定期回收:专门的内核线程kswapd0定期回收内存。 Linux 内存回收的具体方法 页缓存:通过LRU算法回收文件页缓存。包括cache、buffer,通过内存映射的文件映射页。 通过换出守护进程(kswapd)执行换页,它找出最近不使用的页加入到空闲链表,其中包括应用程序内存。页面换出涉及写入文件系统或...

很长很长的专栏 1961

FISCO BCOS(八)——— 一键部署 WeBase

环境 版本 Java Oracle JDK 8 至 14 MySQL MySQL-5.6及以上 Python Python3.6及以上 PyMySQL 1、获取部署安装包: wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.4/webase-deploy.zip 2、解压安装包: unzip webase-deploy.zip 3、进入目录: c...

林中有神君 3608

Claude Code 官方文档+3 个高活跃社区+5 个可复用开源项目:14.4 节持续学习资源实测清单

揭示 Claude Code 的核心交互范式是「状态机驱动的对话式编程」,强调官方文档实为配置契约、社区是直觉验证场、开源项目是配置能力校准器;通过真实故障案例解析上下文丢失根源,提出以工程化方式管理 claude.config.json、CLAUDE.md 和技能配置。

weixin_28728443的博客 326

Redis(3)内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制 Redis的内存回收主要围绕以下两个方面: 1.Redis过期策略:删除过期时间的key值 **2.Redis淘汰策略:**内存使用到达maxmemory上限时触发内存淘汰数据 Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。 Redis过期策略 过期策略通常有以下三种: 1.定时过期 每个设置过期时间的key都需要创建一个定时器...

cowbin2012的专栏 1万+

【人工智能】架构师必读:大模型时代的意图识别 (Intent Recognition) 四大技术流派与实践指南

意图识别没有“银弹”,选择哪种方案取决于具体的业务需求、数据积累以及成本预算。如果追求极简与低成本,BERT 是不二之选。如果业务极其复杂且依赖上下文,RAG 或 Agent 模式更合适。如果追求极致的稳定与效果,基于 LLM 的微调 + Function Calling 是目前的行业最佳实践。参考资源:基于 LLM 的意图识别解决方案(Embedding 相关课程章节)

奶爸的编程之路,也就一周冷个三天 704

Redis内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制 Redis的内存回收主要围绕以下两个方面: 1.Redis过期策略:删除过期时间的key值 2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据 Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。 Redis过期策略 过期策略通常有以下三种: 1.定时过期 每个设置过期时间的key...

Linias的博客 943

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

redis键过期原理_Redis的内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制Redis的内存回收主要围绕以下两个方面:1.Redis过期策略:删除过期时间的key值2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略过期策略通常有以下三种:1.定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除...

weixin_42318912的博客 135

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java redis设置过期时间_Redis的内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制Redis的内存回收主要围绕以下两个方面:1.Redis过期策略:删除过期时间的key值2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略过期策略通常有以下三种:1.定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除...

weixin_39926311的博客 291

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java缓存淘汰策略_Redis的内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制Redis的内存回收主要围绕以下两个方面:1.Redis过期策略:删除过期时间的key值2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略过期策略通常有以下三种:1.定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除...

weixin_42357618的博客 212

redis java回收资源性能_Redis的内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制Redis的内存回收主要围绕以下两个方面:1.Redis过期策略:删除过期时间的key值2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。Redis过期策略过期策略通常有以下三种:1.定时过期每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除...

weixin_39653448的博客 111

Redis系列教程(九):Redis的内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制 Redis的内存回收主要围绕以下两个方面: 1.Redis过期策略:删除过期时间的key值 2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据 Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。 Redis过期策略 过期策略通常有以下三种: 1.定时过期 每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好...

一个有情怀的程序猿博客 297

深入理解Redis(四)----Redis的内存回收原理,及内存过期淘汰策略详解

在设置键过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作放任键过期不管,但是每次从键空间获取键时,都检查取得的键是否过期,过期的话就删除该键,没过期的话就返回该键每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键,至于要删除多少个过期键,检查多少个数据库,由算法决定定时删除策略是内存友好的.通过定时器,定时删除策略可以保证过期键会尽可能的被删除,并释放过期键所占用的内存。

caihuayuan5的博客 1074

高并发架构系列:Redis的内存回收原理,及内存过期淘汰策略详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34066347的博客 322

高并发架构系列:Redis的内存回收原理,及内存过期淘汰策略详解 ...

Redis内存回收机制 Redis的内存回收主要围绕以下两个方面: 1.Redis过期策略删除过期时间的key值 **2.Redis淘汰策略**内存使用到达maxmemory上限时触发内存淘汰数据 Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。 Redis过期策略 过期策略通常有以下三种: 1.定时过期 每个...

weixin_34151004的博客 128

Redis内存回收全解析:过期删除与内存淘汰机制深入底层

在缓存与数据库混用的场景里,Redis内存管理是系统稳定性的基石。当内存资源紧张时,如何高效清理过期数据、如何按策略淘汰冷数据,直接关系到服务响应速度与数据可靠性。Redis通过惰性删除与定期删除协同处理过期键,同时基于maxmemory触发近似LRU或LFU淘汰策略,在CPU与内存之间寻求平衡。理解这些机制不仅有助于合理配置缓存策略,还能避免海量Key集中过期引发的性能抖动。从基础概念到源码实现,再到生产环境中的参数调优,本文系统梳理了内存回收的两条核心链路,帮助你在面试和实战中准确应对。

weixin_42524708的博客 225

Redis学习笔记

RedisTemplate主要支持String,List,Hash,Set,ZSet这几种方式的参数,其对应的方法分别是opsForValue()、opsForList()、opsForHash()、opsForSet()、opsForZSet()。 Redis支持的数据类型: string:最基本的数据类型,二进制安全的字符串,最大512M。 list:按照添加顺序保持顺序的字符串列表。 set:无序的字符串集合,不存在重复的元素。 zset:已排序的字符串集合。 hash:key/value

有个疙叫瘩儿的博客 494

Redis内存回收机制(Redis 过期策略、淘汰策略)

Redis是基于内存操作的非关系型数据库,Redis中提供了多种内存回收策略,当内存容量不足时,为了保证程序的运行,这时就不得不淘汰内存中的一些对象,释放这些对象占用的空间,那么选择淘汰哪些对象呢? Redis的内存回收,主要围绕如下两个方面来进行: ①Redis过期策略:删除已经过期的数据; ②Redis淘汰策略:内存使用到达maxmemory上限时触.........

扛麻袋的少年的博客 4287
上一篇: Java 库:为 Java 程序员而生的 10 最佳库
下一篇: 分布式锁的由来、特点、及Redis分布式锁的实现详解
JavaAQA
博客等级 码龄7年 1粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值