美文网首页
Redis缓存淘汰策略

Redis缓存淘汰策略

作者: 江月照我眠 | 来源:发表于2022-02-21 19:29 被阅读0次

LRU(less recently used)是Redis唯一支持的回收算法,当缓存占用的内存空间达到设置的最大空间时,会自动驱逐老的数据。

驱逐策略有以下几种:
  • noeviction: 不删除策略。达到内存限制时直接返回错误。
  • allkey-lru: 所有key通用。优先删除最近最少使用的key。
  • volatile-lru: 只限设置了expire的key。优先删除最近最少使用的key。
  • allkeys-random: 所有key通用。随机删除一部分key。
  • volatile-random: 只限设置了expire的key。随机删除一部分key。
  • volatile-ttl: 只限设置了expire的key。优先删除剩余时间(time to live)短的key。

一般来说:

  • 如果分为冷热数据,推荐allkey-lru策略
  • 如果需要循环读写所有的key,或者各个key访问频率差不多,可以选择allkeys-random策略。
  • 如果要让Redis根据TTL来筛选删除key,可以使用volatile-ttl策略。

volatile-lruvolatile-random主要应用场景是:既有缓存,又有持久key的实例中,一般这类场景应该使用单独的Redis实例。

值得一提的是,设置expire会消耗额外的内存,所以使用allkey-lru可以更高效地使用内存,因为这样使用的时候不需要设置过期时间。

Redis使用的并不是完全LRU算法,而是近似LRU算法。被删除的key也不一定是最满足LRU特征的key,而是通过近似LRU算法抽样,然后删除访问时间最古老的key。这样做得原因也是为了节省内存空间,在新版本3.0开始,使用pool(池子)来作为候选,这大大提高了算法效率,也使得近似LRU算法越来越接近纯LRU算法。

相关文章

  • 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/blbilrtx.html