您现在的位置是: 主页 > 个人博客日记 > 程序人生 > 程序人生

【权力征途】编程中非常小又容易犯的错误

2019-09-14 11:17 【程序人生】 人已围观

简介: 前面两篇文章我们分析了,在使用Redis的过程中会遇到的『缓存穿透』和『缓存击穿』的问题。看似很小的东西,往往在流量上去才能体会出来。但是老话常说,千里之堤溃于蚁穴。所以我们在写代码的过程中千万要小心又小心,慎重又慎重。 那么对于Redis的使用,只有上面这两个问题吗?来捋一下前面我们说的场景。有一张商品表存储了所有商品的信息,我们在前端访问的时候...

前面两篇文章我们分析了,在使用Redis的过程中会遇到的『缓存穿透』和『缓存击穿』的问题。看似很小的东西,往往在流量上去才能体会出来。但是老话常说,千里之堤溃于蚁穴。所以我们在写代码的过程中千万要小心又小心,慎重又慎重。

那么对于Redis的使用,只有上面这两个问题吗?来捋一下前面我们说的场景。有一张商品表存储了所有商品的信息,我们在前端访问的时候,把商品加载到redis中以应对高并发访问的需求。

在处理缓存的问题上,我们前面堵住了缓存穿透和缓存击穿这两个问题。很好,我们服务正常跑下来了。销售数据很好看,公司觉得延长活动时间,再来几波促销。不巧的是,我们之前设置的缓存快要过期了,很多数据都在凌晨0点钟过期(上次活动在0点开始,缓存正好是按照天为单位计算)。那么这个时候批量过期的压力都会导向DB,是不是觉得有点小害怕?

上面这种现象,我们称之为缓存血崩,不过不需要太害怕,这种压力前期扛下来,后面基本上也不会有太大问题。但是我们怕的是这种血崩的场景过于平凡对于DB的负载能力是一个考验,因为90%的峰值只供10%的时间场景。我们最希望看到的系统压力图是平直无波动的,而现实往往是一个三角形。我们需要做的是尽可能的让负载均衡,减少峰尖。这样才能保证高效率的服务。

那么怎么去防止这种问题呢?其实也很简单,我们在设置过期时间的时候,增加一个随机数。冷热数据设置不同的缓存时间。看下面的伪代码。

孟文鹏博客版权所有丨如未注明 , 均为原创丨 转载请注明【权力征途】编程中非常小又容易犯的错误

很赞哦! ( )

随机图文

文章评论

    总共有: 条评论 来说两句吧...

    用户名:

    联系方式:

猜你喜欢

站点信息

  • 建站时间 :2019-6-18
  • 共有会员 : 2名
  • 共有文章 :5360篇
  • 今日更新 :64篇
  • 百度收录
  • 文章阅读 :753118人次
  • 公众号 :扫描二维码,关注我们
-->