redis - 淘汰机制

最大使用内存

redis虽然快,但是内存成本还是比较高的,不可能像磁盘那样子拥有比较大的的容量。如果内存使用过大,系统的保护机制会讲大内存使用的进程给OOM掉,因此,我们会限制redis的最大使用内存,设置maxmemory参数,如果超过这个最大使用内存,redis就会根据淘汰策略,处理key。

redis - 淘汰机制


淘汰策略

  • noeviction:默认策略,不淘汰,如果内存已满,添加数据是报错。
  • allkeys-lru:在所有键中,选取最近最少使用的数据抛弃。
  • volatile-lru:在设置了过期时间的所有键中,选取最近最少使用的数据抛弃。
  • allkeys-random: 在所有键中,随机抛弃。
  • volatile-random: 在设置了过期时间的所有键,随机抛弃。
  • volatile-ttl:在设置了过期时间的所有键,抛弃存活时间最短的数据。

设置最大内存和淘汰策略

config set maxmemroy 1073741824
config set maxmemory-policy allkeys-lru
config rewrite

配置文件里面设置

maxmemroy 1gb
maxmemory-policy allkeys-lru

redis5的默认策略是不淘汰,直接返回报错。

(error) OOM command not allowed when used memory > 'maxmemory'.

redis - 淘汰机制


总结

在使用redis的时候要预估好使用量,最好有一定的预留,防止突然的高并发数据,设置好maxmemory,才能生效淘汰策略。maxmemroy可以通过config set 进行动态设置,记得config rewrite保存好修改的配置。

redis - 淘汰机制

相关推荐