Redis缓存过期和和内存淘汰策略
创始人
2024-03-17 14:26:34
0

目录

1、MaxMemory

2、Expire数据结构

3、删除策略

3.1、惰性删除

3.2、主动删除

3.3、缓存淘汰策略

​​​​​​​3.4、缓存淘汰策略的选择


1、MaxMemory

  • Redis作为DB使用时,为了保证数据的完整性,不允许淘汰任何键值对。
  • Redis作为缓存使用时,maxmemory默认为0,表示不限制最大内存。随着key-value越来越多,Redis性能会急剧下降。
  • 可以在redis.conf中通过maxmemory变量设置最大内存。
  • 可通过执行命令CONFIG GET maxmemory查看当前最大内存。
  • 设置maxmemory后,当趋近maxmemory时,通过缓存淘汰策略,从内存中删除对象。

2、Expire数据结构

  • 通过expire命令设置key的存活时间:expire key ttl(单位秒)->设置key在ttl秒后失效。
  • 通过ttl命令查看key还有多久失效。-1:永久有效;-2:已失效。

        

        dict 用来维护一个 Redis 数据库中包含的所有 Key-Value 键值对,expires则用于维护一个 Redis 数据库中设置了失效时间的键(即key与失效时间的映射)。

        设置了失效时间的key和具体的失效时间全部都维护在 expires 这个字典表中。

        当我们使用 expire命令设置一个key的失效时间时,Redis 首先到 dict 这个字典表中查找要设置的key是否存在,如果存在就将这个key和失效时间添加到 expires 这个字典表。

        当我们使用 setex命令向系统插入数据时,Redis 首先将 Key 和 Value 添加到 dict 这个字典表中,然后将 Key 和失效时间添加到 expires 这个字典表中。

3、删除策略

        惰性删除、主动删除。

​​​​​​​3.1、惰性删除

        Redis 服务器不主动删除过期的键值,而是当访问键值时,再检查当前的键值是否过期,如果过期则执行删除并返回 null 给客户端;如果没过期则正常返回值信息给客户端。

        优点是不会浪费太多的系统资源,只是在每次访问时才检查键值是否过期。

        缺点是删除过期键不及时,造成了一定的空间浪费。

3.2、主动删除

  • FIFO(First In First Out,先进先出)

        根据缓存被存储的时间,离当前最远的数据优先被淘汰。

  • LRU(Least Recently Used,最近最少使用)

        根据最近被使用的时间,离当前最远的数据优先被淘汰。

        核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

  • LFU(Least Frequently Used, 最不经常使用)

        在一段时间内,缓存数据被使用次数最少的会被淘汰。

        核心思想是“如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小”。

  • Random

        随机删除

  • Ttl

        从将要过期的数据集中选择数据删除。

3.3、缓存淘汰策略

当Redis节点分配的内存使用到达最大值以后,Redis会启动内存淘汰策略。

  • Volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
  • Volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰
  • Volatile-random:从已设置过期时间的数据集中任意选择数据淘汰
  • Allkeys-lru:从所有键中,移除最近最少使用的key
  • Allkeys-random:从数据集中任意选择数据淘汰
  • No-eviction:不淘汰任何缓存,内存不足以容纳新写入数据时,写入操作报错。

volatile前缀的策略都是从已设置过期时间数据集中进行淘汰。

allkeys前缀的策略都是面向所有key进行淘汰。

LRU(least recently used)最近最少用到的。

​​​​​​​3.4、缓存淘汰策略的选择

  • allkeys-random:缓存数据没有明显的冷热之分,每个元素以相同的概率被访问
  • allkeys-lru/volatile-lru:数据有明显的冷热之分,希望将最常访问的数据留在缓存中

以上内容为个人学习理解,如有问题,欢迎在评论区指出。

部分内容截取自网络,如有侵权,联系作者删除。

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...