Redis内存淘汰回收策略

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2020/03/redis-nei-cun-tao.html

redis在存储KV值时,如果内存满了会怎么样?这取决与我们对于redis的 maxmemory-policy 的配置,具体配置如下:

maxmemory-policy volatile-lru

此项配置的值有如下

  • noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。
  • allkeys-lru:在主键空间中,优先移除最近未使用的key。
  • volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
  • allkeys-random:在主键空间中,随机移除某个key。
  • volatile-random:在设置了过期时间的键空间中,随机移除某个key。
  • volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。

redis对于这个问题的解决方法分为两种,一种是提示错误,另一种就是移除已有的键值对。根据不同的配置,移除键值对时,可以在所有键值对范围内,也可以仅在设置了过期时间的键值对范围内;移除的策略,可以是随机移除,也可使用LRU(最近最少使用)策略移除;此外,对于设置了过期时间的键值对,可以从最早过期的开始移除。

发表评论