Redis过期策略及内存淘汰机制

深入解析逆时偏移(RTM)算法及其在C++中的实现 逆时偏移(Reverse Time Migration, RTM)是一种高级地震成像技术,广泛应用于地震勘探中。RTM通过逆时传播波场来构建地震子波,能够提供更高分辨率和更精确的地下构造图像。本文将详细介绍RTM的基本原理,并通过C++代码示例,深入解析如何实现和优化RTM算法。希望这篇文章能够为地球物理学家和C++开发者提供有价值的参考。 阅读详情

redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期时间以节省内存,那redis是如何删除过期数据的?删除过期数据的策略是什么?Redis过期策略是怎么样的?

redis为什么这么快,原因之一就是原因之一就是Redis操作都是基于内存的,既然是基于内存的,而内存的大小是有限的,当内存不足或占用过高时,怎么办?这就是我们今天要讨论的第二个问题:Redis的内存淘汰机制。

一、Redis的过期策略

Redis在设置缓存数据时指定了过期时间,到了过期时间数据就失效了,那Redis是怎么处理这些失效的数据的呢?这就用到了Redis的过期策略——“定期删除+惰性删除” 。

1、定期删除

定期删除是指Redis默认每隔100ms就随机抽取一些设置了过期时间的key,检测这些key是否过期,如果过期了就将其删除。

1、100ms怎么来的?

在Redis的配置文件redis.conf中有一个属性"hz",默认为10,表示1s执行10次定期删除,即每隔100ms执行一次,可以修改这个配置值。
在这里插入图片描述

2、随机抽取一些检测,一些是多少?

同样是由redis.conf文件中的maxmemory-samples属性决定的,默认为5。
在这里插入图片描述

3、为什么是随机抽取部分检测,而不是全部?

因为如果Redis里面有大量key都设置了过期时间,全部都去检测一遍的话CPU负载就会很高,会浪费大量的时间在检测上面,甚至直接导致redis挂掉。所有只会抽取一部分而不会全部检查。

正因为定期删除只是随机抽取部分key来检测,这样的话就会出现大量已经过期的key并没有被删除,这就是为什么有时候大量的key明明已经过了失效时间,但是redis的内存还是被大量占用的原因 ,为了解决这个问题,Redis又引入了“惰性删除策略”。

2、惰性删除

惰性删除不是去主动删除,而是在你要获取某个key 的时候,redis会先去检测一下这个key是否已经过期,如果没有过期则返回给你,如果已经过期了,那么redis会删除这个key,不会返回给你。

"定期删除+惰性删除"就能保证过期的key最终一定会被删掉 ,但是只能保证最终一定会被删除,要是定期删除遗漏的大量过期key,我们在很长的一段时间内也没有再访问这些key,那么这些过期key不就一直会存在于内存中吗?不就会一直占着我们的内存吗?这样不还是会导致redis内存耗尽吗?由于存在这样的问题,所以redis又引入了“内存淘汰机制”来解决。

二、Redis内存淘汰机制

内存淘汰机制就能保证在redis内存占用过高的时候,去进行内存淘汰,也就是删除一部分key,保证redis的内存占用率不会过高,那么它会淘汰哪些key呢?Redis目前共提供了8种内存淘汰策略,含Redis 4.0版本之后又新增的两种LFU模式:volatile-lfu和allkeys-lfu。
在这里插入图片描述

1、什么时候会执行内存淘汰策略,内存占用率过高的标准是什么?

redis.conf配置文件中的 maxmemory 属性限定了 Redis 最大内存使用量,当占用内存大于maxmemory的配置值时会执行内存淘汰策略。

2、内存淘汰策略的配置

内存淘汰机制由redis.conf配置文件中的maxmemory-policy属性设置,没有配置时默认为no-eviction模式。

3、淘汰策略的执行过程
> 客户端执行一条命令,导致Redis需要增加数据(比如set key value);
> Redis会检查内存使用情况,如果内存使用超过 maxmemory,就会按照配置的置换策略maxmemory-policy删除一些key;
> 再执行新的数据的set操作;

三、其他场景对过期key的处理

1、快照生成RDB文件时
过期的key不会被保存在RDB文件中。

2、服务重启载入RDB文件时
Master载入RDB时,文件中的未过期的键会被正常载入,过期键则会被忽略。Slave 载入RDB 时,文件中的所有键都会被载入,当主从同步时,再和Master保持一致。

3、AOF 文件写入时
因为AOF保存的是执行过的Redis命令,所以如果redis还没有执行del,AOF文件中也不会保存del操作,当过期key被删除时,DEL 命令也会被同步到 AOF 文件中去。

4、重写AOF文件时
执行 BGREWRITEAOF 时 ,过期的key不会被记录到 AOF 文件中。

5、主从同步时
Master 删除 过期 Key 之后,会向所有 Slave 服务器发送一个 DEL命令,Slave 收到通知之后,会删除这些 Key。
Slave 在读取过期键时,不会做判断删除操作,而是继续返回该键对应的值,只有当Master 发送 DEL 通知,Slave才会删除过期键,这是统一、中心化的键删除策略,保证主从服务器的数据一致性。

Open3D 计算FPFH特征【2025最新版】 FPFH特征描述子的python实现,本文最新更新时间为:2025年3月18日。 阅读详情

相关推荐

【ubuntu】如何搭建AFTR+B4环境

为何要使用ipv6 目前ipv4地址已经不够用了,而IPv6采用128位地址长度,几乎可以不受限制地提供地址。而且ipv6具有更高的安全性。 主流的ipv6方案 1.双栈方案 :所有设备同时支持IPv4/IPv6协议栈,核心理念在于其传送网同时支持IPv4和IPv6 2.DS-Lite方案 :IPv4‐in‐IPv6 隧道和 NAT 这两个基本技术,同时支持IPV4与IPV6,对于ipv4用户,可以通过ipv6隧道与ipv4业务平台实现通信;针对ipv6用户,可直接通过ipv6网络通信。 3.6RD方案 :

weixin_43863426的博客 2721

redis过期策略和内存淘汰机制

Redis过期删除采用的是定期删除,默认是每100ms检测一次,遇到过期的key则进行删除,这里的检测并不是顺序检测,而是随机检测。显然Redis也考虑到了这一点,当我们去读/写一个已经过期的key时,会触发Redis的惰性删除策略,直接回干掉过期的key。单链表可以实现头部插入新节点、尾部删除旧节点的时间复杂度都是O(1),但是对于中间节点时间复杂度是O(n),因为对于中间节点c,我们需要将该节点c移动到头部,此时只知道它的下一个节点,要知道其上一个节点需要遍历整个链表,时间复杂度为O(n)。......

Dream 3322

【图形学】Loop细分算法及半边结构实现(C++)

文章目录Loop 细分算法介绍增加新顶点更新旧顶点算法实现半边结构半边结构的表示方法半边结构的构造方法创建所有顶点创建所有面及半边半边结构的使用 Loop 细分 顾名思义,网格细分是将粗糙网格精细化的过程,如下动图。Loop细分是众多网格细分算法的一种,Loop细分仅仅对三角形网格模型有效。值得注意的是,虽然叫Loop细分,但是不能理解为“循环”细分,叫这个名字是因为作者的名字是这个而已。 下面是一个粗糙的兔子模型1000个面,进行3次细分 算法介绍 Loop细分算法主要分两步进行 增加新顶点:增加

wk_119的博客 8066

Redis的过期策略以及内存淘汰机制

Redis的过期策略以及内存淘汰机制

小志的博客 2885

uni-app项目中引入Vant UI组件库(完美避坑!!!)纯净版

uni-app项目中引入Vant UI组件库(纯净版--无uni-ui)

Wzmlzrr的博客 3万+

Java 大视界 -- Java+Spark MLlib 构建智能推荐系统:协同过滤算法实战与优化(441)

Java+Spark MLlib构建智能推荐系统实战 本文详细介绍了基于Java和Spark MLlib构建协同过滤推荐系统的全流程实践方案。主要内容包括: 架构设计:采用离线批处理为主、近实时更新为辅的架构,包含数据采集层、处理层、模型层、推荐生成层、存储层和应用层六大模块,可支撑千万级用户推荐需求。 技术实现: 使用Spark MLlib的ALS算法进行协同过滤模型训练 提供数据清洗、模型训练、推荐生成等核心代码实现 采用MySQL存储推荐结果,支持批量插入和事务保障 生产级优化: 版本化模型存储规避覆

【青云交】华为云云享专家 | 阿里云开发者社区专家博主 技术圈个人影响力前 9 | 博客之星 TOP12 优快云 首位四榜(原力榜 / 作者周榜 / 领军人物 / 综合热榜)榜首,破平台纪录! 苏州地区全榜霸榜,感恩全网十多万粉丝同行! 2521

【Redis】Redis 的过期策略以及内存淘汰机制详解

hz 默认是 10。惰性删除不是去主动删除,而是在你要获取某个 key 的时候,Redis 会先去检测一下这个 key 是否已经过期,如果没有过期则返回给你,如果已经过期了,那么 Redis 会删除这个 key,不会返回给你。Slave 在读取过期键时,不会做判断删除操作,而是继续返回该键对应的值,只有当 Master 发送 DEL 通知,Slave 才会删除过期键,这是统一、中心化的键删除策略,保证主从服务器的数据一致性。Master 载入 RDB 时,文件中的未过期的键会被正常载入,过期键则会被忽略。

迪曼奥特迦-博客 1万+

深入Luckfox Pico的Web界面:从Angular前端到CGI后端的RV1106 IPCWeb全栈解析

本文深入解析了基于瑞芯微RV1106芯片的Luckfox Pico设备上,IPCWeb全栈解决方案的架构与部署。详细介绍了如何通过SDK编译配置,将现代Angular前端框架与高效的C++ CGI后端结合,并利用nginx和FastCGI在嵌入式环境中构建稳定、高性能的Web管理界面,为物联网设备开发提供了完整的实战参考。

3a9bq4r8t2y的博客 274

Redis 过期策略以及内存淘汰机制

面试突击专用

qq_42769721的博客 349

无人机飞控传感器全解析:从IMU到光流传感器的实战应用

本文深入解析了无人机飞控系统的核心传感器,从IMU、气压计、磁力计到光流传感器,详细阐述了其工作原理、数据融合策略及常见挑战。结合ICF5、Pixhawk 6C等主流飞控硬件,提供了从传感器校准、滤波器调优到应对室内光流定位、强磁干扰等实战场景的系统性优化指南,帮助开发者突破飞控“黑箱”,实现更稳定、可靠的飞行控制。

weixin_28396629的博客 165

微信小程序 - 实现客户支付订单连接小票打印机自动打印订单小票功能,微信小程序如何对接小票打印机自动打印小票,小程序收到新订单的时候可以联动商家打印出小票/单据/标签/发货单/电子面单等(详细教程)

微信小程序调用小票打印机,小程序接单后小票机自动打印订单,微信小程序云开发订单微信支付与小票和标签打印的完整高效流程,如何实现微信订单连接小票打印机并自动接单打印,微信小程序连接打印机打印单据小票打印,微信小程序云开发调用小票打印机实现方案,微信小程序怎么配置小票打印机,微信支付电子小票,外卖小程序实战-接单后小票机自动打印订单,微信小程序连接蓝牙打印小票,打印购物小票,调用小票打印机打印小票,微信订单如何连接小票打印机并实现自动接单打印,实现微信订单连接小票打印机并自动接单打印,微信小程序小票打印机打印教

🏆 前端领域优质创作者 1万+

「 Redis 」缓存过期策略及内存淘汰策略

在计算机科学中,缓存是一种优化技术,用于提高系统的性能。通过将经常访问的数据存储在快速访问的介质(如快速内存)中,可以减少读取慢速存储介质(如硬盘)的次数,从而加快了程序的响应时间。然而,缓存也带来一个问题:缓存中存储的数据可能会过期或变得不再有用。为了解决这个问题,我们需要使用缓存淘汰策略。这些策略控制着缓存中哪些数据应该被删除以及何时删除它们。除了缓存淘汰策略之外,内存淘汰机制也是一个重要的概念。当缓存满了并且新数据需要被添加到缓存中时,缓存中的旧数据必须被替换。

frozenpenguin的博客 1775

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1498

Redis——过期策略、内存淘汰机制

volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。不是的,如果定期删除没删除key。当再次向内存空间加入E时,这时内存空间又不足了,选择在内存空间中待的最久的C将其淘汰出内存,这时的内存空间存放的对象就是E->B->D。volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。当加入D时,就出现了问题,内存空间不够了,因此根据LRU算法,内存空间中A待的时间最为久远,选择A,将其淘汰。

qq_74811378的博客 1004

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Redis的过期策略和内存淘汰机制

Redis的过期策略和内存淘汰机制是保障其高性能和稳定性的关键。正确设置过期策略和内存淘汰机制,能够有效管理内存,防止内存溢出,确保系统在高负载下依然能稳定运行。

良月柒 1393

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Redis 的过期策略与内存淘汰机制

Redis 作为高性能的键值存储系统,其过期策略和内存淘汰机制是保证数据时效性和内存高效利用的核心功能。

m0_73355421的博客 1939

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

问:说说Redis的过期策略和内存淘汰机制

Redis的过期策略和内存淘汰机制是其高性能键值存储的基石。过期策略包括定时删除、惰性删除和定期删除,旨在有效管理设置过期时间的键。内存淘汰机制则通过多种策略(如LRU、LFU、随机等)在内存达到限制时释放空间。合理配置这些机制,结合具体场景(如缓存系统、会话管理等),可确保Redis高效稳定运行。

技术铺掌柜 1302

深入了解Redis的过期策略和内存淘汰机制

以上就是Redis中常见的内存淘汰机制。根据业务需求和系统特点,可以选择合适的淘汰机制来保证系统的性能和稳定性。例如,对于需要保持较高访问速度的系统,可以选择LRU淘汰机制;对于需要保证数据的新鲜度的系统,可以选择LFU淘汰机制;而随机淘汰则是一种简单且效率较低的淘汰机制,适用于一些特定场景。通过了解Redis的过期策略和内存淘汰机制,我们可以更好地优化Redis的使用。合理选择过期策略和内存淘汰机制,可以提高系统的性能和稳定性,减少资源的浪费,从而更好地满足不同场景下的需求。

喔的嘛呀的博客 788

redis的key过期删除策略和内存淘汰机制

Redis的过期键删除策略主要包括三种:定时删除(立即释放内存但消耗CPU)、惰性删除(访问时才检查删除,可能内存泄漏)和定期删除(折中方案,定期扫描删除)。Redis实际采用惰性删除+定期删除的组合策略。内存淘汰机制包括不淘汰数据和针对过期键或全部键的多种淘汰算法(如LRU、LFU、TTL等)。在RDB/AOF持久化和主从复制过程中,过期键有特殊处理机制,如主节点删除后通知从节点同步删除。这些策略平衡了内存使用和性能需求。

weixin_44146398的博客 1381

【redis】redis的过期策略以及内存淘汰机制

今天我们讨论下redis的过期策略以及内存淘汰机制,如果你想要考察一个人对redis的了解,那吗这个问题是必选的,从他对这个问题的回答中,就可以了解到他的redis深浅。

热爱技术,享受生活 2万+

Redis的过期策略、内存淘汰机制

volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。不是的,如果定期删除没删除key。当再次向内存空间加入E时,这时内存空间又不足了,选择在内存空间中待的最久的C将其淘汰出内存,这时的内存空间存放的对象就是E->B->D。volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。当加入D时,就出现了问题,内存空间不够了,因此根据LRU算法,内存空间中A待的时间最为久远,选择A,将其淘汰。

qq_74811378的博客 676

Redis过期策略与内存淘汰机制解析

维度LRULFU核心依据访问时间(最近)访问频率(次数)适用场景访问模式较稳定,无明显高频键存在明显高频访问的场景(如热点数据)精准度较低(易误淘汰高频但最近未用的键)较高(更贴合实际访问需求)实现复杂度简单复杂内存开销小较大Redis 版本所有版本4.0+

Toroto5的博客 1396

Redis过期策略和内存淘汰机制及LRU代码实现

Redis提供了丰富的过期策略和内存淘汰机制,开发者可以根据具体的业务需求来选择合适的策略。LRU算法是一种常用的内存淘汰机制,Redis的LRU实现采用了2Q变种的近似算法,既能保证内存的有效利用,又能考虑访问热度的因素。理解和掌握这些机制,可以帮助我们更好地使用Redis,提高系统的性能和可靠性。

weixin_55745942的博客 1830

Redis的过期策略及内存淘汰机制

Redis的过期策略及内存淘汰机制 对于一个缓存型redis,如果本身只有10G的容量,那么流量增大,写入了15G的数据,那么对于原本的10G数据是按照怎样的策略进行删除呢?在实际使用过程中,redis里数据已经设置了过期时间,但是时间到了,内存占用率还是比较高,数据没有删除的原因是什么呢?今天一起来看下。 对于一个缓存型redis,如果本身只有10G的容量,那么流量增大,写入了15G的...

liben0429的博客 233

Redis的过期策略及内存淘汰机制详解

Redis的过期策略和内存淘汰机制为我们提供了灵活的内存管理手段,帮助我们在高性能应用中高效地管理数据。通过合理设置过期时间、选择合适的淘汰策略以及定期监控和调整,我们可以确保系统的稳定性和可靠性,从而更好地满足业务需求。

良月柒 1307
上一篇: 电商项目 - 用户订单确认及下订单操作
下一篇: 分布式任务调度平台 - XXLJob
程序员老石
博客等级 码龄8年 286粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值