共计 648 个字符,预计需要花费 2 分钟才能阅读完成。
已过期的 key 如何解决?
设置了 expire 的 key 缓存过期了,然而服务器的内存还是会被占用,这是因为 redis 所基于的两种删除策略
redis 有两种策略:
- (被动)定时删除
定时随机的查看过期的 key,如果过期则清理删除。(每秒查看次数在 redis.conf 中的 hz 配置) - (被动)惰性删除
当客户端申请一个曾经过期的 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 过期工夫的缓存中,删除行将过期的
正文完