redis缓存淘汰

  • 如何工作
    首先,客户端会发起需要更多内存的申请;

其次,Redis检查内存使用情况,如果实际使用内存已经超出maxmemory,Redis就会根据用户配置的淘汰策略选出无用的key;
*,确认选中数据没有问题,成功执行淘汰任务。

  • 参数设置
    redis.confmaxmemory设置内存大小

默认情况下,Redis 在使用的内存空间超过 maxmemory 值时,并不会淘汰数据,也就是设定的 noeviction 策略。对应到 Redis 缓存,也就是指,一旦缓存被写满了,再有写请求来时,Redis 不再提供服务,而是直接返回错误。Redis 用作缓存时,实际的数据集通常都是大于缓存容量的,总会有新的数据要写入缓存,这个策略本身不淘汰数据,也就不会腾出新的缓存空间,我们不把它用在 Redis 缓存中。

  • 内存淘汰策略
 volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。
 volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。
 volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。
 volatile-lfu:从已设置过期时间的数据集挑选使用频率最低的数据淘汰。
 allkeys-lru:从数据集中挑选最近最少使用的数据淘汰。
 allkeys-lfu:从数据集中挑选使用频率最低的数据淘汰。
 allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
 no-enviction(驱逐):禁止驱逐数据,这也是默认策略。意思是当内存不足以容纳新入数据时,新写入操作就会报错,请求可以继续进行,线上任务也不能持续进行,采用no-enviction策略可以保证数据不被丢失。

请输入图片描述

ishow.bind-time.com Copyright © 2020 小肥青王二狗

  Previous post redis高级应用
Next post   已到最新一篇

添加新评论

很多东西宁缺毋滥,流星的光芒短暂而灼热闪耀。

让你变得更好的那个人,往往是你觉得很难与之相处的那个人。—— by 小宇

觉得自己做的到和不做的到,其实只在一念之间。

路在自己脚下,没有人可以决定我的方向。

你的选择是做或不做,但不做就永远不会有机会。

凡事顺其自然,遇事处于泰然,得意之时淡然,失意之时坦然,艰辛曲折必然,历尽沧桑悟然。