美文网首页
redis缓存的淘汰策略

redis缓存的淘汰策略

作者: ajajaj | 来源:发表于2021-05-30 11:20 被阅读0次

redis缓存是在内存中保存数据,避免业务从数据库中读取数据,从而提升系统的响应速度。内存相比于磁盘访问速度时快了,但是内存的成本时远高于磁盘的,所以不可能将所有的数据都放在内存中,所以当缓存空间满了以后就涉及到缓存淘汰的问题。

redis缓存有哪些淘汰策略

大概有八种,如下图

image

下面逐个介绍下

  • noevction:一旦数据被写满了,再有写请求的时候直接返回错误
  • volatile-ttl 在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进行删除,越早过期的越先被删除。
  • volatile-random 就像它的名称一样,在设置了过期时间的键值对中,进行随机删除。
  • volatile-lru 会使用 LRU 算法筛选设置了过期时间的键值对。
  • volatile-lfu 会使用 LFU 算法选择设置了过期时间的键值对。
  • allkeys-randoms:从所有键值对选择并随机删除
  • allkeys-lru策略:使用lru算法在所有数据中筛选
  • allkeys-lfu:使用lfu算法在所有数据中筛选

LRU

LRU算法全称是Least Recently Used,就是按照最近最少使用原则来筛选数据,最不常用的数据会被筛选出来,最频繁使用的数据会留在缓存中

LRU会将所有的数据维护在一个链表中,链表的头和尾分别是MRL、LRU端,分别代表最常使用和最不常用的数据,如下图

image

LRU算法其实很好理解,就是认为刚刚访问的数据可能还会被访问到,就放在MRU端,长时间不访问的数据放在LRU端,缓存满了就删除它

不过因为LRU需要用链表管理所有数据,会带来额外的开销,而且每次数据访问时需要移动数据,会比较耗时,降低redis的缓存性能。

所以redis对LRU做了简化,redis会记录每条数据最近一次访问的时间戳,然后redis在淘汰数据时会随机选出N个数据,作为一个候选集合,接下来redis会比较这N个数据的lru字段。把其中最小的淘汰出去

Redis 提供了一个配置参数 maxmemory-samples,这个参数就是 Redis 选出的数据个数 N。例如,我们执行如下命令,可以让 Redis 选出 100 个数据作为候选数据集:

CONFIG SET maxmemory-samples 100

当需要再次淘汰数据时,Redis 需要挑选数据进入第一次淘汰时创建的候选集合。这儿的挑选标准是:能进入集合数据的lru字段必须小于集合中最小的lru值。当有新数据进入候选数据集后,如果候选数据集中的数据个数达到了 maxmemory-samples,Redis 就把候选数据集中 lru 字段值最小的数据淘汰出去。

lfu的算法我们在后面再介绍,今天就先到这里吧!

相关文章

  • redis_内存淘汰策略

    redis_内存淘汰策略 介绍 Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入...

  • Redis追命连环问,你能回答到第几问?(下)

    上次的Redis连环问问到了Redis是什么,Redis支持的数据类型,缓存雪崩缓存穿透缓存击穿,内存淘汰策略和持...

  • redis基础&spark操作redis

    Redis内存淘汰策略 将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。 为什么要使用内存淘汰策略...

  • PHP面试题 之 redis

    Redis的缓存策略和主键失效机制 作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略。 在Redis...

  • Redis缓存淘汰策略

    常用的淘汰算法 FIFO:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被...

  • Redis缓存淘汰策略

    为什么会有淘汰? Redis可以看作是一个内存数据库,可以通过Maxmemory指令配置Redis的数据集使用指定...

  • Redis缓存淘汰策略

    本文作为学习笔记,文章内容来自“极客时间”专栏《Redis核心技术与实战》,如有侵权,请告知,必即时删除。 1、淘...

  • Redis缓存淘汰策略

    最大缓存在 Redis 中,允许用户设置最大使用内存大小 server.maxmemory,默认为0,没有指定最大...

  • Redis缓存淘汰策略

    LRU(less recently used)是Redis唯一支持的回收算法,当缓存占用的内存空间达到设置的最大空...

  • Redis 缓存淘汰策略

    本文主要讲解了 redis 缓存过期淘汰策略, 后面我们会结合 LeetCode 的 LRU 算法题目,自己动手实...

网友评论

      本文标题:redis缓存的淘汰策略

      本文链接:https://www.haomeiwen.com/subject/crvpsltx.html