Redis的缓存淘汰策略

在Redis中,允许用户设置最大使用内存的大小server.maxmemory,在内存限定的情况下是很有用的。

当Redis内存数据集大小上升到一定大小的时候,就会试行数据淘汰策略,redis提供了6种数据淘汰策略。

Redis的缓存淘汰策略_第1张图片
redis的内存淘汰策略.png

redis.conf配置文件中说明了,redis在到达最大内存容量时便会移除元素。

  • volatile-lru:从设置过期时间的数据集中,移除最近最久未使用的元素。
  • allkeys-lru:从redis所有数据中,移除最近最久未使用的元素。
  • volatile-random:从设置过期时间的数据集中,随机选择一个数据进行释放。
  • allkeys-random:从redis所有数据中,随机选择一个数据进行释放。
  • volatile-ttl:从设置过期时间的数据集中,选择一个将要过期的数据释放。
  • noeviction:[ɪˈvɪkʃn] 以为可神、驱逐 ,不删除任何数据,直接返回异常。
Redis的缓存淘汰策略_第2张图片
noenvi.png

默认的淘汰策略为noenviction,类似于lru算法。默认情况下,Redis会随机挑选5个键,并且从中选取一个最近最久未使用的key进行淘汰,在配置文件中,可以配置maxmemory-samples的值来设置redis需要检查key的个数,但是检查的越多,耗时越久。

一般推荐的淘汰策略是volatile-lru。我们再应用程序中识别Redis中保存数据的重要性。

  1. 针对于不变的,重要的数据(例如配置数据),不应该设置有效期,这样Redis永远不会淘汰这些数据;
  2. 针对于哪些不是很重要,并且可能会发送改变的数据,我们应当设置有效期,这样在内存不足的情况下,可以淘汰这部分数据。

历史文章

mybatis&&数据库优化&&缓存目录
JAVA && Spring && SpringBoot2.x 目录

你可能感兴趣的:(Redis的缓存淘汰策略)