redis在maxmemory打满时会采用回收策略(maxmemory-policy)
打个比方,公交车座位坐满了,需要腾出空间给后面进入的人坐下,(虽然这个比方不恰当)
redis有以下6个策略:
1.noenviction:直接返回错误没有更多的空间存储(配置默认)
2.allkeys-lru:回收使用最少的键(LRU),让后面的进入的人能坐下
3.volatile-lru:回收使用最少的键(LRU),但只是从过期的集合中回收键
4.allkeys-random:随机回收键
5.volatile-random:从过期的集合中随机回收键
6.volatile-ttl:回收过期集合的键,并且优先回收ttl时间较短的键
redis采用的是近似的LRU算法淘汰过期的键,官网图片如下:
redis3.0LRU算法已经很接近理想值了。