首页 > 系统相关 >内存淘汰策略

内存淘汰策略

时间:2024-02-29 13:00:46浏览次数:28  
标签:策略 过期 volatile 内存 键值 淘汰

1、不进行数据淘汰的策略

noeviction(Redis3.0之后,默认的内存淘汰策略) :它表示当运行内存超过最大设置内存时,不淘汰任何数据,这时如果有新的数据写入,则会触发 OOM,但如果没有数据写入的话,只是单纯的查询或者删除操作的话,还是可以正常工作。

2、进行数据淘汰的策略

针对「进行数据淘汰」这一类策略,又可以细分为「在设置了过期时间的数据中进行淘汰」和「在所有数据范围内进行淘汰」这两类策略。

1)在设置了过期时间的数据中进行淘汰:

volatile-random:随机淘汰设置了过期时间的任意键值;
volatile-ttl:优先淘汰更早过期的键值。
volatile-lru(Redis3.0 之前,默认的内存淘汰策略):淘汰所有设置了过期时间的键值中,最久未使用的键值;
volatile-lfu(Redis 4.0 后新增的内存淘汰策略):淘汰所有设置了过期时间的键值中,最少使用的键值;
2)在所有数据范围内进行淘汰:

allkeys-random:随机淘汰任意键值;
allkeys-lru:淘汰整个键值中最久未使用的键值;
allkeys-lfu(Redis 4.0 后新增的内存淘汰策略):淘汰整个键值中最少使用的键值。

config get maxmemory-policy // 查看redis默认过期策略

 注意:

通常情况下推荐优先使用 allkeys-lru 策略。这样可以充分利用 LRU 这一经典缓存算法的优势,把最近最常访问的数据留在缓存中,提升应用的访问性能。

如果业务数据中有明显的冷热数据区分,建议使用 allkeys-lru 策略。

如果业务应用中的数据访问频率相差不大,没有明显的冷热数据区分,建议使用 allkeys-random 策略,随机选择淘汰的数据就行。

如果没有设置过期时间的键值对,那么 volatile-lru,volatile-lfu,volatile-random 和 volatile-ttl 策略的行为和 noeviction 基本一致。

标签:策略,过期,volatile,内存,键值,淘汰
From: https://www.cnblogs.com/beatle-go/p/18042324

相关文章

  • JAVA虚拟机系列: (一) . JDK1.6/ 1.7/ 1.8运行时内存分配简要图解
     注意:  1.本文讨论均为JDK官方版本,默认采用的HotSpot虚拟机;  2.图片为本人绘制,转载请标明出处;  3.本博均为个人理解,如有分歧,欢迎指正和讨论 从JDK1.6到1.8,运行时内存分配简图分别如下:  在JDK1.7中的HotSpot中,已经把原本放在方法区的字......
  • 机器学习策略篇:详解满足和优化指标(Satisficing and optimizing metrics)
    满足和优化指标要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧。假设已经决定很看重猫分类器的分类准确度,这可以是\(F_1\)分数或者用其他衡量准确度的指标。但除了准确度之外,还需要考虑运行时......
  • 数据过期删除策略与内存淘汰策略
    Redis中提供了三种过期删除的策略1)惰性删除惰性删除,当一个键值对过期的时候,只有再次用到这个键值对的时候才去检查删除这个键值对,也就是如果用不着,这个键值对就会一直存在。优点:对CPU是友好的,只有在取出键值对的时候才会进行过期检查,这样就不会把CPU资源花费在其他无关紧要......
  • 策略模式
    importtimeclassLocalStrategy:defexecute(self):print("thisisalocal104execute")classSaasStrategy:defexecute(self):print("thisisasaasexecute")classSwitch:def__init__(self,strategy......
  • (笔记)FPGA设计性能优化策略漫谈(一)--时序优化
    1   速度优化 1.1 关键路径重组FPGA逻辑设计中时序路径上的组合逻辑都会给路径增加延时,从而影响设计性能的往往只有几条关键的路径而已,所以可以通过减少关键路径上的组合逻辑单元数来减小该路径上的延时,从而达到优化的目的。关键路径重组技术多用于关键路径由多个路......
  • L-BFGS-B(Limited-memory Broyden–Fletcher–Goldfarb–Shanno )算法理解 —— 内存
    本文主要讲下个人对数值优化算法中几种常见算法的理解。什么是优化算法?给出函数f(X),现在要求minf(X)时的X值,这就是最优化问题。1.共轭梯度法方程:A*x=b,A矩阵为对称正定矩阵,b为向量,目标为求解出向量x。个人认为共轭梯度法并不能被当做是一个真正的优化算法,因为共轭梯度......
  • Redis内存被占满的解决办法
    1、增加内存。不推荐,因为即使加大内存,以后还是会有内存被占满的可能,不能根本解决问题。2、使用RedisCluster3、使用内存淘汰策略redis2.6+版本,redis.conf中的默认的策略是noeviction,一共有八种:  其中,LRU是LeastRecentlyUsed的缩写,即最近最少使用;LFU是LeastFrequent......
  • 内存分区
    内存一般分为四个区:堆区、栈区、全局区、代码区对于一个程序的编译而言,编译程序占用五个区:堆区、栈区、全局区、代码区、文字常量区堆区:程序员动态申请一定大小的内存空间,可读可写栈区:存放局部变量,函数参数,可读可写全局区:全局变量,静态变量(静态全局和静态局部)、静态函数、还分......
  • 1.交易策略概述
    量化交易策略的种类繁多,难以精确计数,因为新策略不断被发明,而旧策略也在不断演变。但可以将它们大致分为几个主要类别,以提供一个概览:趋势跟踪策略:利用市场趋势进行交易,比如动量策略。套利策略:利用市场中的价格差异来获利,如统计套利、对冲套利等。市场中性策略:设计以在各种市场......
  • 2.事件驱动策略介绍(1)
    (这篇文章介绍事件驱动交易是什么,它的原理和运作方式,适合股市新手和对此策略感兴趣的读者。) 事件驱动策略是一种量化交易策略,它专注于利用特定事件对金融市场或特定资产价格产生的影响来获利。这类策略认为,市场对于即将发生或已经发生的特定事件(如并购、财报发布、重大政策......