Redis 淘汰策略解读

摘要:

      Redis 在生产环境中,采用配置参数 maxmemory 的方式来限制内存的大小。当实际存储内存超过 maxmemory 参数值时,开发者可以通过 Redis 内存淘汰策略,来决定如何腾出新空间继续支持读写工作。

工作情况

       首先,客户端会发起需要更多内存的申请;其次,Redis 检查内存使用情况,如果实际使用内存已经超出 maxmemory, Redis 会根据用户配置的淘汰策略选出无用的 Key,执行淘汰任务。

淘汰策略

volatile-lru

从过期时间的数据集(server.db[i].expires)中挑选出最近最少使用的数据淘汰。没有设置过期时间的 key 不会被淘汰,这样就可以在增加内存空间的同时保证需要持久化的数据不会丢失。

volatile-ttl

除了淘汰机制不同,策略上基本与 volatile-lru 相似,从设置过期时间的数据集(server.db[i].expires) 中挑选将要过期的数据淘汰,ttl 值越小,越容易被淘汰。

volatile-random

从设置过期时间的数据集(server.db[i].expires) 中任意选择数据淘汰。

allkeys-lru

从数据集(server.db[i].dict) 中挑选最近最少使用的数据淘汰,该策略要淘汰的 key 面向的是全体 Key 集合,而非过期的 Key 集合 

allkeys-random

从数据集(server.db[i].dict)中选择任意数据淘汰。

no-enviction

禁止驱逐数据,也就是当内存不足以容纳新入数据时,新写入操作就会报错,采用该策略可以保证数据不被丢失,也是系统默认的一种淘汰策略。

注意:在Redis中,LRU算法是一个近似算法,默认情况下,Redis会随机挑选5个键,并从中选择一个最久未使用的key进行淘汰。在配置文件中,按maxmemory-samples选项进行配置,选项配置越大,消耗时间就越长,但结构也就越精准。

参考资料:

https://stor.51cto.com/art/201904/594773.htm

https://wiki.jikexueyuan.com/project/redis/data-elimination-mechanism.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Redis的分片机制包含对一致性HASH算法的运用

前言:大家都知道redis单台的默认内存大小一般是10M.如果现在需要我们将1G的数据保存到内存中。这该如何做到呢?比如我们就用单台redis,但是一味的扩大单台redis内存则直接影响执行的效率,会有一种得不偿失的感觉。于是呢,我们就得采用分片策略实现数据保存,通过多台redis共同为用户提供内存得支持,实现内存扩容,提高执行效率!!

Redis 知识整理

_本文以Redis5.0.7为准。_基本概念Redis是开源的(BSD协议)内存数据存储。以KV的方式存储数据。key类型固定为string,value支持的类型有:stringlistsetzsethashtable淘汰策略volat

Redis 淘汰策略解读 - HelloWorld