限制Redis使用的最大内存

一、内存到达最大限制移除策略

LRU: Least Recently Used 最少最近使用 (从时间跨度上来,访问时间在最早的那个优先剔除)访问时间最早的优先剔除

LFU: Least Frequently Used 访问次数最少的优先剔除。

1.volatile-lru -> Evict using approximated LRU among the keys with an expire set.  仅对设置了过期时间的键采取LRU淘汰
2.allkeys-lru -> Evict any key using approximated LRU. 对所有的键都采取LRU淘汰,当预期请求符合一个幂次分布(二八法则等),比如一部分的子集元素比其它其它元素被访问的更多时,可以选择这个策略。
3.volatile-lfu -> Evict using approximated LFU among the keys with an expire set. 对有过期时间的key采用LFU淘汰算法
4.allkeys-lfu -> Evict any key using approximated LFU. 对全部key采用LFU淘汰算法
5.volatile-random -> Remove a random key among the ones with an expire set. 随机回收设置过期时间的键
6.allkeys-random -> Remove a random key, any key.  随机回收所有的键 。循环连续的访问所有的键时,或者预期请求分布平均(所有元素被访问的概率都差不多)
7.volatile-ttl -> Remove the key with the nearest expire time (minor TTL)。 仅淘汰设置了过期时间的键---淘汰生存时间TTL(Time To Live)更小的键
8.noeviction -> Don't evict anything, just return an error on write operations. 如果缓存数据超过了maxmemory限定值,并且客户端正在执行的命令(大部分的写入指令,但DEL和几个指令例外)会导致内存分配,则向客户端返回错误响应

 

二、设置redis.conf配置文件最大使用内存和移除策略

    1.maxmemory: 配置Redis存储数据时指定限制的内存大小,比如100m。当缓存消耗的内存超过这个数值时, 将触发数据淘汰。该数据配置为0时,表示缓存的数据量没有限制, 即LRU功能不生效。64位的系统默认值为0,32位的系统默认内存限制为3GB

    2.maxmemory_policy: 触发数据淘汰后的淘汰策略

    3.maxmemory_samples: 随机采样的精度,也就是随即取出key的数目。该数值配置越大, 越接近于真实的LRU算法,但是数值越大,相应消耗也变高,对性能有一定影响,样本值默认为5。

  

posted @ 2020-05-18 17:09  前线码农  阅读(6534)  评论(0编辑  收藏  举报