美文网首页
Redis 缓存过期处理与缓存淘汰机制

Redis 缓存过期处理与缓存淘汰机制

作者: snoopy_fly_ | 来源:发表于2020-08-28 15:39 被阅读0次

引子

计算机内存有限,越大越贵,redis 的高并发高性能都是基于内存的,用硬盘的话 GG

已过期的 key 如果处理?

设置了 expire 的 key 缓存过期了,但是服务器的内存还是会占用,这是因为 redis 所基于的两种删除策略

  • (主动)定时删除:定时随机的检查过期的 key,如果过期则清理删除(每秒检查次数在 redis.conf 中的 hz 配置)
  • (被动)惰性删除:当客户端请求一个已经过期的 key 的时候,那么 redis 会检查这个 key 是否过期,如果过期则删除,返回一个 nil,这种策略对 CPU 比较友好,不会有太多的损耗,但是内存占用会比较高

所以,即使 key 过期了,但是只要没有被 redis 所清理,那么内存还是占用着的。

如果内存被 redis 占用满了怎么办?

内存如果占满了,可以使用硬盘,但是没有意义,因为硬盘没有内存块,会严重影响 redis 的性能,所以,当内存占用满了之后,redis 提供了一套缓存淘汰机制,即 memory management


# 当内存已使用值达到 maxmemory,开始清理缓存 
# 单位:bytes(字节),123000000Byte ≈ 117.3M
maxmemory 123000000

# maxmemory-policy 缓存淘汰策略值枚举:

volatile-lru:在使用 expire 设置了过期时间的 key 中,删除最近最少使用的缓存,然后保存新的缓存

allkeys-lru:删除最近最少使用的缓存,然后保存新的缓存(推荐使用)

volatile-lfu:在使用 expire 设置了过期时间的 key 中,删除最不经常使用的缓存,然后保存新的缓存

allkeys-lfu:删除最不经常使用的缓存,然后保存新的缓存(推荐使用)

volatile-random:在使用 expire 设置了过期时间的 key 中,随机删除一个 key

allkeys-random:在所有 key 中,随机删除一个 key

volatile-ttl:在使用 expire 设置了过期时间的 key 中,删除最快要过期的 key,即删除 TTL 最小的 key

noeviction:不删除任何数据,报出写操作异常(默认值)

LRU 和 LFU 的区别

  • LRU:Least Recently Used,即最近最少使用页面置换算法,淘汰访问时间最早的数据
  • LFU:Lease Frequently Used,即最不经常使用页面置换算法,将数据按照访问频次排序,淘汰访问频次最低的数据
  • 对比:
    • LRU 对于循环出现的数据,缓存命中率不高,如:1,1,1,2,2,2,3,4,1,1,1,2,2,2……
    • LFU 对于交替出现的数据,缓存命中率不高,如:1,1,1,2,2,3,4,3,4,3,4,3,4,3,4,3,4……

参考:缓存淘汰算法 LRU 和 LFU

相关文章

  • Redis 缓存过期处理与缓存淘汰机制

    引子 计算机内存有限,越大越贵,redis 的高并发高性能都是基于内存的,用硬盘的话 GG 已过期的 key 如果...

  • Redis 缓存过期处理与内存淘汰机制

    引子 计算机内存有限,越大越贵,Redis的高并发高性能都是基于内存的,用硬盘的话GG 已过期的key如何处理? ...

  • [缓存系列] redis那点事

    本文,你将阅读到以下内容: 如何应对缓存击穿和缓存雪崩的问题; Redis 的过期策略以及内存淘汰机制; 1.如何...

  • 二十、redis的缓存过期机制

    一、缓存过期机制 redis的缓存过期机制有两种: 主动的定期删除 被动的惰性删除 主动的定期删除默认是如图中的一...

  • Redis缓存过期机制

    一、针对与设置了过期时间的key值 1.(主动)定期删除:定时随机的检查过期的key,如果过期则清理删除 ...

  • PHP面试题 之 redis

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

  • Redis的缓存淘汰策略LRU与LFU

    前言 Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(...

  • Redis过期键删除策略和淘汰机制

    前言 Redis缓存淘汰策略与Redis键的过期删除策略并不完全相同,前者是在Redis内存使用超过一定值的时候(...

  • Ip限制

    2秒之内访问次数超过100,加入黑名单。 可用redis的过期缓存机制来实现频繁访问的缓存功能。 nginx中限制...

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

网友评论

      本文标题:Redis 缓存过期处理与缓存淘汰机制

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