关于redis:Redis-缓存过期处理与内存淘汰机制

32次阅读

共计 648 个字符,预计需要花费 2 分钟才能阅读完成。

已过期的 key 如何解决?
设置了 expire 的 key 缓存过期了,然而服务器的内存还是会被占用,这是因为 redis 所基于的两种删除策略
redis 有两种策略:

  1. (被动)定时删除
    定时随机的查看过期的 key,如果过期则清理删除。(每秒查看次数在 redis.conf 中的 hz 配置)
  2. (被动)惰性删除
    当客户端申请一个曾经过期的 key 的时候,那么 redis 会查看这个 key 是否过期,如果过期了,则删除,而后返回一个 nil。这种策略
    敌对,不会有太多的损耗,然而内存占用会比拟高。
    所以,尽管 key 过期了,然而只有没有被 redis 清理,那么其实内存还是会被占用着的。
    那么如果内存被 Redis 缓存占用慢了咋办?
    内存占满了,能够应用硬盘,来保留,然而没意义,因为硬盘没有内存快,会影响 redis 性能。
    所以,当内存占用满了当前,redis 提供了一套缓存淘汰机制:MEMORY MANAGEMENT

maxmemory:当内存已使用率达到,则开始清理缓存

* noeviction:旧缓存永不过期,新缓存设置不了,返回谬误
* allkeys-lru:革除起码用的旧缓存,而后保留新的缓存(举荐应用)* allkeys-random:在所有的缓存中随机删除(不举荐)* volatile-lru:在那些设置了 expire 过期工夫的缓存中,革除起码用的旧缓存,而后保留新的缓存
* volatile-random:在那些设置了 expire 过期工夫的缓存中,随机删除缓存
* volatile-ttl:在那些设置了 expire 过期工夫的缓存中,删除行将过期的

正文完
 0