Redis LRU 缓存回收机制

一、可通过设置 redis.conf 设置 redis 使用的最大内存

maxmemory 100mb       -- 设为0表示不限制,64位默认不限制,32位默认限制3GB

二、当超过该内存值时,redis 将使用回收机制进行接下来的键的写入

maxmemory noeviction
  • 1)noeviction : 对写入指令直接返回错误(默认)
  • 2)allkeys-lru : 尝试回收最少使用的key
  • 3)volatile-lru : (在过期集合的键中)尝试回收最少使用的key
  • 4)allkeys-random : 回收随机的key
  • 5)volatile-random : (在过期集合的键中)回收随机的key
  • 6)volatile-ttl :(在过期集合的键中)优先回收存活时间 ttl 较短的key

回收完成后(直到使用内存小于maxmemory),让新添加的数据有空间进行存放

 

一般设置经验规则:

1)allkeys-lru : 当部分key比其他key访问频率高时

2)allkeys-random : 当需要循环扫描所有的key尽量保证请求分布正常

3)volatile-ttl : 当通过创建缓存设置ttl时

为键设置过期时间需要消耗内存,使用 allkeys-lru 这种策略更加高效。

三、Redis 的 LRU 算法

Redis的LRU算法并非完整的实现,redis 没办法选择最佳候选的key(最久未被访问的key)进行回收,通过对少量 key 进行取样并回收其中最佳的key。

maxmemory-samples 5

近似的LRU算法达到效果与LRU趋于等价,并且不需要太大的内存(真实的LRU需要很大的内存)

Redis LRU 缓存回收机制_第1张图片

你可能感兴趣的:(Redis)