Redis高可用高性能缓存的应用系列03 - 缓存过期淘汰策略LRU、LFU

时间:2023-04-14 08:03:12 来源: 腾讯云

概述

Redis高可用高性能缓存的应用系列的第3篇,主要介绍Redis缓存过期淘汰策略的知识点。

Redis过期键删除策略

Redis设置key时,都会设置一个过期时间,那么当过期时间到了都是怎么处理的?

Redis同时使用了惰性过期和定期过期两种方式的缓存淘汰策略。


【资料图】

惰性过期:只有当这个key被访问时,才会判断是否过期,过期则要清理掉,他可以节省CPU的资源,但是会浪费内存的资源,会出现大量过的Key没有被访问过,从而不会被清除,导致内容占用越来越大。定期过期:每隔一段时间,扫描一定数量的设置了过期时间的key,假如过期了则进行删除操作。

定期过期的执行过程

Redis默认每秒进行10次过期扫描:

1.从过期字典中随机选择20个key

2.删除这20个key中已过期的

3.如果超过25%的key过期,则重复第一步

同时,为了保证业务不受影响,Redis还设置了扫描的时间上限,默认不会超过25ms

内存淘汰策略

1.假如内存不足时,Redis会根据设置的淘汰策略,删除一些不常用的数据,保证Redis的正常使用,所有的前提都是加入键的时候如果超过Redis内存设定的限制后,Redis采用的服务。

1.noeviction: 不会在写入,写入会报错。

2.allkeys-lru:首先通过LRU算法驱逐最久没有使用的键

3.volatile-lru:首先从设置了过期时间的键集合中驱逐没有最久使用的键

4.allkeys-random:从所有过期字典中的key随机删除

5.volatile-random:从过期键的集合中随机驱逐

6.volatile-ttl:从配置了过期时间的键中,驱逐马上就要过期的键

7.volatile-lfu:从配置了过期时间的键中驱逐使用频率最少得键

8.allkeys-lfu:从所有键中使用频率最少的键

LRU

根据最近被使用的时间,距离当前最远的数据优化被淘汰,当有新增key 或者是被访问时,元素会被追加在队尾,需要淘汰时从头部开始淘汰,这个是LRU的思想。

在Redis redisObject 中,维护了一个24位的时钟(有点类似于Cpu的频率),可以简单理解为Cpu对内存使用的时间戳,每个Key对应的也维护了同样24位的时间戳。

比如现在要进行LRU,首先拿到当前系统的时间钟,和Redis redisObject 内存的LRU时间钟对差值计算,差最大的进行淘汰,这里需要注意的是,全局时钟只有24位,按秒计算的话,最多可以存储194天,所以可能出现key时钟大于全局时钟的情况,但是Redis的LRU不会对全局的时钟进行比对,他会从设置了过期时间的key中进行比对。

struct redisObject {    unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or                            * LFU data (least significant 8 bits frequency                            * and most significant 16 bits access time). */};

LFU

LRU只考虑了使用的时间,但是没有考虑Key使用的次数,Redis4.0 以后,新增了LFU的淘汰策略,根据使用时间和次数最为淘汰的权重。

LFU把之前LRU的24bit拆分成两部分,16bit的时间钟和8it的访问频率,8bit比较小,在源码的evict文件中给出了数据。

uint8_t LFULogIncr(uint8_t counter) {    if (counter == 255) return 255;    double r = (double)rand()/RAND_MAX;    double baseval = counter - LFU_INIT_VAL;    if (baseval < 0) baseval = 0;    double p = 1.0/(baseval*server.lfu_log_factor+1);    if (r < p) counter++;    return counter;}

标签:

精彩推送

青海湖迎来开湖 高原“蓝宝石”将再现迷人景象_世界今头条

央视网消息:在西北,我国最大的内陆湖泊青海湖在冰封了一个冬季后开始解封,碧波万顷的蓝宝石颜色即将...

来源:2023.04.07

全球即时看!中国足协在苏州召开中超俱乐部投资人会议

来源:广州日报广州日报讯(全媒体记者张喆)昨天,中国足协在苏州召开中超俱乐部投资人会议。本次会议讨...

来源:2023.04.07

教育案例怎么写小学_教育案例怎么写

1、选择复杂的情境。2、所谓复杂的情境,是指故事的发生、发展具有多种可能性。3、教师在教育教学活动中...

来源:2023.04.07

2021年天津高考英语真题和答案

《2021年天津高考英语真题和答案》由高考试题网发布,主要内容:各位天津市的高考考生注意了!距离2023年...

来源:2023.04.07

铁骨铮铮 赤胆忠魂——致敬缅怀公安英烈 焦点快报

原标题:铁骨铮铮赤胆忠魂——致敬缅怀公安英烈新华社北京4月6日电新华社记者熊丰、王明玉和平时期,公...

来源:2023.04.07

2023丰都庙会开幕式时间+地点+活动内容

开幕式时间:4月22日19:30开幕式地点:丰都县城龙街(滨江路)丰都庙会时间:4月22日-5月3日开幕式活动...

来源:2023.04.07

天天快看:4月07日12时陕西汉中有确诊病例吗 4月07日12时陕西汉中疫情实时最新通报

1、新增本土:0;2、新增无症状:0;3、现有确诊:261;4、累计确诊:350;5、累计治愈:89;6、累计死亡:0;

来源:2023.04.07

我国移动网络IPv6流量首次突破50%

数据显示,2023年2月,我国移动网络IPv6占比达到50 08%,首次实现移动网络IPv6流量超过IPv4流量的历史性

来源:2023.04.07

快看:股票怎么判断主力出逃?资金出逃的股票一定会下跌吗?

股票怎么判断主力出逃?【1】判断主力是否有出逃可以从各大交易软件上的大单流向、北向资金流向以及融资...

来源:2023.04.07

新闻快讯

X 关闭

X 关闭

新闻快讯