redis惰性删除会增加cpu压力

redis惰性删除会增加cpu压力,第1张

不会增加cpu压力惰性删除的含义是:当要删除的数据到达给定时间时,先不进行删除 *** 作;等待下一次访问时,若数据已过期则进行删除,客户端返回不存在,数据未过期,则返回数据。优点:CPU的使用率大大降低,减轻其压力; 缺点:内存空间占用率较高,会存在长期占用内存的数据。总结:使用存储空间换取处理器性能(空间换时间),适用范围:大内存,弱CPU。

背景介绍:我们系统使用的缓存服务是付费版的阿里云的redis集群服务,配置是4核,16G。redis的集群结构如下:分为四个节点DB0,DB1,DB2,DB3

之前的存储方案是存储的商品促销数据,结构是:
KEY FIELD VALUE来存储。其中KEY是一个固定的字符串"zy:prom:wx",FIELD则是商品sku,VALUE是商品促销的具体信息。这种方式导致我们存入缓存服务器的数据一直集中在DB0节点上,在访问量过大时,该节点会在短时间内受到到的访问压力很大,DB0的cpu瞬间达到100%以上,造成服务卡顿甚至不可用。而相比之下DB1,DB2,DB3的节点cpu压力却很小,可以忽略不计。这是为什么?最后询问了阿里的技术,他们说我们的数据存储的方法有误,具体是我们的key设置有误。与阿里的技术对话如下:

所以我们后来改造了方案把key的组成变程了"prom:wx:sku",这样key就会根据sku的不同而不同,增大了key的离散度,这样key通过hash算出来的值,就会不同,使得所有的数据不再存放到同一台节点上,完美解决问题。

修改后的存储分布情况如下图:DB0、DB1、DB2、DB3四个节点数据均匀分布。

对修改前后两天同一时间区间的缓存服务器的cpu压力情况对比:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10588855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存