加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜新站长网 (https://www.0418zz.com.cn/)- 管理运维、AI硬件、数据集成、云备份、负载均衡!
当前位置: 首页 > 站长资讯 > 动态 > 正文

提高生产率的DevOps指标

发布时间:2021-01-31 17:08:44 所属栏目:动态 来源:互联网
导读:缓存雪崩 如果门店内的多个色号的口红同时售罄了,并且门店在这个时间点刚好也不知道总部有没有库存了,这时候如果有大量顾客来到门店购物的话,就会有更多的咨询电话打到总部那里。 或者是门店突然出现问题了,不能提供服务了,很多顾客就可能自己打电话到

缓存雪崩

如果门店内的多个色号的口红同时售罄了,并且门店在这个时间点刚好也不知道总部有没有库存了,这时候如果有大量顾客来到门店购物的话,就会有更多的咨询电话打到总部那里。

或者是门店突然出现问题了,不能提供服务了,很多顾客就可能自己打电话到总部咨询库存情况。类似这种情况,在缓存领域有一个类似的概念叫做缓存雪崩。
 

异步定时更新

如果提前知道某一个色号比较畅销的话,那就可以定时的咨询总部是否还有存货,定时的更新库存情况就可以避免上面这种情况了。

在缓存处理上,同理,比如某一个热点数据的过期时间是1小时,那么每59分钟,通过定时任务去更新这个热点key,并重新设置其过期时间。

互斥锁

还有一种解决办法,那就是如果很多顾客咨询的是同一个色号的口红,那么就先处理第一个用户的咨询,其他同样请求的顾客先排队等待。一直到店员从总部那里获取到最新的库存信息后,就可以安排其他人继续购买了。

在缓存处理上,通常使用一个互斥锁来解决缓存击穿的问题。简单来说就是当Redis中根据key获得的value值为空时,先锁上,然后从数据库加载,加载完毕,释放锁。若其他线程也在请求该key时,发现获取锁失败,则先阻塞。
 

缓存空值

解决多次询问总部的方法比较简单,如果口红门店在帮第一个女孩子查询之后,就记录下来这个色号已经没有了,下次其他女孩再来问这个色号的时候,直接告诉她没货了。

这样就可以避免每次都惊动总部了。

在缓存中,之所以会发生穿透,就是因为缓存没有对那些不存在的值得Key缓存下来,从而导致每次查询都要请求到数据库。

那么我们就可以为这些key对应的值设置为null并放到缓存中,这样再出现查询这个key 的请求的时候,直接返回null即可 。

但是还需要注意的就是需要有一个失效时间,因为如果不设置失效的话,如果哪天总部有货了,门店还是当做没货的话,就会影响销量了。

BloomFilter

很多时候,缓存穿透是因为有很多恶意流量的请求,这些请求可能随机生成很多Key来请求查询,这些肯定在缓存和数据库中都没有,那就很容易导致缓存穿透。

针对类似的情况,可以使用一个过滤器。

比如如果有一群人经常来门店问一些根本不存在的色号,比如五彩斑斓的黑,这些色号该品牌根本没生产过的话,店员就可以直接告诉顾客不存在就行了,也不需要惊动总部。

在缓存穿透防治上常用的技术是布隆过滤器(Bloom Filter)。

布隆过滤器是一种比较巧妙的概率性数据结构,它可以告诉你数据一定不存在或可能存在,相比Map、Set、List等传统数据结构它占用内存少、结构更高效。

对于缓存穿透,我们可以将查询的数据条件都哈希到一个足够大的布隆过滤器中,用户发送的请求会先被布隆过滤器拦截,一定不存在的数据就直接拦截返回了,从而避免下一步对数据库的压力。

(编辑:阜新站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读