Redis淘汰策略简介

室内无人机自主定位:融合Mid360激光雷达与光流传感器的无GPS导航实践 本文详细介绍了室内无人机自主定位技术,通过融合Mid360激光雷达与光流传感器实现无GPS导航。文章分析了技术挑战、硬件配置、算法优化及实战调试,展示了在复杂室内环境中如何实现厘米级定位精度,为仓库巡检、隧道勘测等场景提供可靠解决方案。 阅读详情

Redis的淘汰策略发生在内存被写满的时候。内存是有限的,总有满的时候。所以Redis就为我们提供了多种不同的策略让我们来淘汰掉旧的数据。

Redis的内存大小限制和淘汰策略可以用如下配置进行:

maxmemory <bytes>
maxmemory-policy <policy>



eg.   maxmemory 300mb
      maxmemory-policy allkeys-lru

下面就来分别介绍这些策略。

noeviction

noeviction是这些策略里面最特殊的一个,它不淘汰旧数据,而是当内存满的时候,直接拒绝新数据的加入,返回错误。

volatile-random

在设置了过期时间的数据中,随机进行删除。

volatile-ttl

在设置了过期时间的数据中,根据过期时间的先后进行删除,越早过期的越先被删除。

volatile-lru

在设置了过期时间的数据中,使用LRU算法筛选出要删除的数据

volatile-lfu

在设置了过期时间的数据中,使用LFU算法筛选出要删除的数据

allkeys-random

在所有的数据中,随机进行删除

allkeys-lru

在所有的数据中,使用LRU算法筛选出要删除的数据

allkeys-lfu

在所有的数据中,使用LFU算法筛选出要删除的数据

LRU?LFU?

上面的这些其实都很好理解,区别无非是在设置了过期时间还是在全体数据中选择,以及选择时采用的算法不同而已。那么上面都提到了LRU算法和LFU算法,它们是什么意思,有什么区别呢?

LRU(Least Recently Used)就是最近最少使用淘汰算法。Redis在触发淘汰的时候,会优先淘汰最长时间没被使用的那个数据。这其实很合理,因为我们大部分时间使用Redis都是为了将热点数据缓存起来,然后加快访问速度。那么一个数据如果很长时间没有被访问,那它相对来说可能就“没有那么热点”。所以淘汰掉它是很合理的。

但是Redis里的数据太多了,如果把全部的数据都拿来分析,也是一个非常消耗性能的工作。Redis的实现方式是这样的:随机选取一些key,把最长时间没有使用的key移除。这个随机选取的数量可以在 maxmemory-samples这个配置中进行设置。但是这样还是有一些缺点,它在每次选择的时候,没有利用历史信息。每次都是随机移除,但其实在上一轮移除的时候,有几个key的信息我是已经知道了的,可以加以利用。

所以Redis又改进了策略,采用缓冲池。每一轮移除key的时候,如果它的最长未使用时间比池子里的还要大,就把它添加到缓冲池。这样,每次移除的key不仅是随机选择的数据中最长未使用时间最大的,还是包含了池子中的数据里最大的。而且缓冲池中的数据经过多轮筛选,本身概率就要比随机挑选的大,这样就利用好了每次随机选取的数据。

LFU(Least Frequently Used)就是最不经常使用淘汰算法。Redis中,LFU算法是在LRU算法上的进一步优化。在LRU中有这么一个问题,就是如果在取值的时候,一个不常被访问的数据,刚好被访问了,那么它就会被认为是一个热点数据,从而难以被淘汰。淘汰算法的本意是留下热点数据,这就造成了问题。LFU就解决了这个问题,它在LRU的基础上增加了访问次数的统计,当访问次数相同时,再用LRU进行处理。并且并不是每一次被访问,这个访问次数都会+1,而是有一个随机的过程,这使得计数器是非线性递增的。并且还有一个递减策略,防止某些数据短时间内大量访问,但是后面很长一段时间都不被访问,造成一种热点数据的假象。有递减策略,就可以减少这种假热点数据发生的机率。

以上就是Redis淘汰策略的介绍,可以看出,策略是不断发展的,更新的策略会在某种程度上解决旧策略的一些痛点,从而使被淘汰的数据更加合理。

【架构师面试-缓存与搜索-1】-缓存与缓存置换策略源码实现 1:什么是缓存 缓存:加速数据访问的存储,降低延迟(latency),提升吞吐量(Throughput)的利器。 1:缓存演进历史 1. 查库 2. ConcurrentHashMap 3. LRU 4. Guava Cache 5. 分布式缓存(redis,MemCache) 6. 多级缓存 2:在什么地方加缓存 缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢? 举个栗子:假设一个网站,需要提高性能,缓存可以放在浏览器,可以放 阅读详情

相关推荐

基于Multisim的模电调幅发射机仿真设计

振荡器产生的高频信号的功率很小,所以有必要对高频信号进行功率放大,有利于信号的调制发射。缓冲电路将主振荡器和高频功放电路相隔离,以减小功放电路对主振荡器的影响。缓冲电路可以用射极跟随器电路来实现,其作用就是前后级的阻抗相互匹配,减小前后级的影响。总电路的仿真结果见下图:示波器1~4分别是主振荡器、缓冲电路、高频放大电路和调幅电路的输出波形。由于载波频率稳定度≤10-3,所以可以采用并联型改进电容反馈式三端振荡器(Seiler电路)谐振回路,滤除其他频率的成分,得到与载波(假设。(1)缓冲电路的设计与实现。

Eve223322的博客 4584

Redis 内存淘汰算法什么时候会被触发

Redis内存淘汰算法通常在内存使用超过预设限制、达到内存警戒线或者手动触发的情况下被启动。在配置Redis时,合理设置内存限制和内存淘汰策略是保持Redis高性能和稳定运行的关键。

洪晓鸿 1005

通达信浮筹多空波段抓牛擒龙指标公式源码

VAR33:=VA3>=REF(VA4,1) AND C<REF(C,1) AND VAR19=60 AND VAR18=0 AND 活跃线>=REF(活跃线,1) AND VA12<REF(VA13,1);DRAWTEXT(VAR28 AND COUNT(VAR28,30)=1,65,' ★超涨注意风险'),COLOR0000FF;DRAWTEXT(VAR26 AND COUNT(VAR26,30)=1,90,' ←继续等'),COLOR00FFFF;浮筹线:VA3,COLORFF00FF;

2401_86043146的博客 5260

Redis核心技术-高频问题-缓存淘汰策略

  内存不是无限大的,有用完的时候,当内存满时,边触发Redis淘汰策略。 淘汰策略分类   淘汰策略总共8种。 不进行数据淘汰的策略   noeviction,默认使用的配置。   noeviction策略是缓存被写满了,再有写请求来时,Redis 不再提供服务,而是直接返回错误。 设置了过期时间的数据中进行淘汰   volatile-random、volatile-ttl、volatile-lru、volatile-lfu(Redis 4.0 后新增)。   volatile-ttl: 根据过期时间的

ALONG的博客 1057

ScanNet数据集下载全攻略:从申请到解析的保姆级教程(含常见问题解决)

本文提供了ScanNet数据集从申请授权到下载、解析的完整实战指南。针对这个大规模室内RGB-D数据集,详细介绍了官方申请流程、优化下载策略、数据验证方法,并重点解决了深度图解析等常见问题,帮助三维视觉研究者高效获取和使用这一宝贵资源。

5f4d3s2a1q的博客 619

Cadence PSpice 仿真11:电感型低通滤波器最坏情况分析仿真实战图文教程

在进行蒙特卡罗分析时会将元器件的容差考虑进去,然后通过运行多次的随机仿真,得到电路输出的一个范围。但是多数情况下设计师关注的只是电路的最坏情况是否满足设计要求。PSpice的最坏情况分析是取在容差的边界点元件参数进行仿真以计算出电路输出的最坏情况。所以如果如果电路中有10个元件的话,需要先取10个元件的标准值仿真1次,然后再分别在10个元件的容差边界处各仿真1次,然后再对仿真结果进行统计和计算,再最坏情况下再仿真1次。

fydar的博客 1944

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

👉过期删除是为了让“该死的数据死掉”,内存淘汰是为了防止“所有数据一起拖垮系统”。两者配合,保证 Redis 既轻盈又高效。

m0_69529796的博客 1215

基于泰勒展开改进的物理信息神经网络

基于泰勒展开改进的物理信息神经网络

天天酷科研的博客 504

Redis:内存淘汰机制

参考资料:《Redis的LRU缓存淘汰算法实现》《一文读懂Redis内存淘汰策略》《Redis 的过期策略和内存淘汰机制有什么区别》《Redis内存淘汰策略》写在开头:本文为学习后的总结,可能有不到位的地方,错误的地方,欢迎各位指正。目录一、内存管理二、过期策略 1、定期删除 2、惰性删除三、内存淘汰 1、LRU 2、LFU四、近似LRU Redis通过将热点数据存储到内存中实现了高效的数据读取,但是内存如果使用不当也是会造成一些问题的。

CRUD工程师 1万+

STM32芯片解锁读写保护:更改Option Byte [Error已解决]

解锁读保护:STLink更改Option Byte 变Level从1变为0,点击Apply即可。(程序执行读保护,其实是将Level从0变为1) 默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。 RDP读保护级别 级别0,无保护, 级别1,使能读保护, 这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止); 当芯片处于级别1的时候,可以把选项字节

HowieXue 薛永浩的博客 2万+

[Dify实战] 解决 Dify 导入 DSL 文件时报 “DSL 版本差异” 的兼容性问题

摘要:本文针对Dify开发者在导入.dsl文件时遇到的版本警告提示问题,分析其根源在于DSL文件与当前系统版本不一致。解决方案是通过导出当前Dify应用的DSL文件查看版本号,手动修改待导入文件的version字段以匹配。文章详细说明了操作步骤,并给出使用专业编辑器、避免修改其他字段等实用建议,帮助开发者规避版本不兼容问题,提升多模态AI应用开发效率。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 961

【Redis】内存淘汰策略和过期删除策略

Redis是一个内存键值对数据库,所以对于内存的管理尤为重要。Redis内部对于内存的管理主要包含两个方向,过期删除策略和数据淘汰策略。由于内存有限,缓存系统必须遵循一些淘汰策略来删除一些不再需要的键,以便为新键腾出空间。在Redis中,缓存淘汰策略是由maxmemory和maxmemory-policy两个配置参数控制的。

weixin_40381772的博客 2788

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

redis淘汰策略

redis 默认的最大的内存设置为0,相当于基于物理机的最大值 主要是4种算法,针对不同的key,形成的策略。 算法:key :LRU是Least Recently Used的缩写,也就是表示最近很少使用,也可以理解成最久没有使用。也就是说当内存不够的时候,每次添加一条数据,都需要抛弃一条最久时间没有使用的旧数据。标准的LRU算法为了降低查找和删除元素的时间复杂度,一般采用Hash表和双向链表结合的数据结构,hash表可以赋予链表快速查找到某个key是否存在链表中,同时可以快速删除、添加节点,如图所示。

weixin_40980639的博客 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Redis】内存淘汰策略

Redis内存淘汰策略是指当Redis的内存使用达到其配置的最大内存限制maxmemory)时,Redis根据预设的策略自动删除一部分键(key)及其对应的值(value,以释放内存空间,从而避免内存溢出(OOM)错误的发生。Redis提供了多种内存淘汰策略,以满足不同应用场景的需求。

2301_78320637的博客 1951

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Redis数据的淘汰策略

摘要:Redis内存淘汰策略是内存达到上限时释放空间的关键机制,包括8种策略(如LRU、LFU等)。推荐使用allkeys-lru或allkeys-lfu策略,适用于大多数缓存场景。配置时需设置maxmemory,避免OOM问题。淘汰策略的选择应基于具体场景,如纯缓存系统推荐allkeys-lru,需要统计访问频率则选择allkeys-lfu。监控淘汰情况可通过INFO memory命令实现。最佳实践包括设置合理内存限制、选择合适的淘汰策略及定期监控。

qq_61723836的博客 1331

Redis 内存淘汰策略

Redis作为内存数据库,通过淘汰策略管理内存空间。当内存不足时,Redis支持两种方式释放空间:设置键过期时间自动删除和主动淘汰策略。淘汰策略分为三类:1)volatile-*系列仅淘汰设置了过期时间的键;2)allkeys-*系列对所有键进行淘汰;3)noeviction禁止淘汰直接报错。

平平无奇的小甜菜 1182

[redis系列] redis过期策略和淘汰策略

redis过期策略和淘汰策略

深耕后端、偏爱架构,用代码与设计构建可靠系统 1338

Redis——数据淘汰策略

本文介绍了Redis的八种数据淘汰策略,并讲解了LRU和LFU这两种算法。

qq_61350148的博客 1097

Redis & 淘汰策略 & 总结

淘汰策略用于在内存不足时控制Redis对数据的删除。 Redis会执行淘汰策略前先执行过期策略。

说淑人的所思所想 717

redis的淘汰策略

1、问题引入—— MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据(redis有哪些数据淘汰策略???) 说明:redis内存数据集大小上升到一定大小的时候,就会实行数据淘汰策略(回收策略)。 redis提供6种数据淘汰策略: 1、volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。redis并不是保证取得所有数据集中...

旅途 1115

Redis 内存淘汰策略详解

Redis 是一款高性能的非关系型数据库,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合和 HyperLogLog。Redis 可以用于缓存、消息队列、应用程序中的数据结构存储等场景,它的优点是响应速度快、支持丰富的数据结构和扩展性好。

BXA 4858

Redis内存淘汰策略

Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足。如果内存不满足加入数据的最低存储要求,redis要临时删除一些数据为当前指令清理存储空间。清理数据的策略称为逐出算法。注意:逐出数据的过程不是100%能够清理出足够的可使用空间,如果不成功则反复执行。当对所有数据尝试完毕后,如果不能达到内存清理的要求,将出现错误信息。

weixin_58693169的博客 1564

Redis的内存淘汰策略

Redis中的内存淘汰策略是用于在内存不足时选择哪些键需要被删除以释放内存空间。noeviction:不删除任何键,当内存不足时,所有写操作都会报错。allkeys-lru:在所有键中,选择最近最少使用(Least Recently Used)的键进行删除。volatile-lru:在设置了过期时间的键中,选择最近最少使用的键进行删除。allkeys-random:在所有键中,随机选择一个键进行删除。volatile-random:在设置了过期时间的键中,随机选择一个键进行删除。

Flying_Fish_roe的博客 2791

Redis缓存过期淘汰策略

Redis的过期策略和淘汰策略对于内存管理和系统性能至关重要。通过合理配置这些策略,可以确保Redis在内存使用达到上限时,能够按照预定的规则淘汰部分数据,以释放内存空间。同时,通过合理的过期策略,可以确保过期的键值对能够及时被删除,避免内存的浪费。在实际应用中,建议根据业务需求和数据特点,选择最合适的过期和淘汰策略。

1778

Redis 缓存淘汰策略

缓存淘汰策略是在 Redis 达到最大内存限制时,决定哪些数据需要被移除以便为新数据腾出空间的策略。这些策略通过配置文件或命令进行设置, 以保证 Redis 在有限的内存环境下能够平稳运行。Redis提供了8种淘汰策略,可以分成两大类:**1、针对所有键的策略:**对所有键进行选择和淘汰。**2、仅针对有过期时间的键的策略:**只在设置了过期时间的键中选择淘汰对象。根据不同的应用场景,开发者可以选择合适的策略来确保 Redis 在内存达到上限时,能够高效地管理数据并维持系统的稳定性。

weixin_48161099的博客 826
上一篇: 记一次Jenkins无法启动tomcat问题解决
下一篇: 提升SAP trace级别排查单点登录问题
akitsuki_kouzou
博客等级 码龄11年 138粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值