缓存穿透与雪崩

缓存穿透是指查询一个一定不存在的数据,如查询id=-1的数据信息,由于缓存不命中(cache miss),还要到数据库去查,但是数据库也查不到,这时给查询请求返回空,并且不会写数据到缓存中,这样,下次同样的请求还是会到数据库去查,大量这样的请求将给数据库造成极大的压力从而失去了缓存的意义。

解决方案有两个:

1.第一次在数据库中查不到数据时,在给请求返回空的同时,也把空对象写到缓存中,这样以后再查的时候就会直接从缓存返回空了。

2.在缓存前加一个布隆过滤器,把所有可能的键都放在里面,这样如果查询不存在的键时,就直接从布隆过滤器返回了,连缓存都不用查。

参考博客:http://carlosfu.iteye.com/blog/2248185

缓存雪崩是指缓存由于某种原因(可能是宕机)挂掉了,而导致所有的查询都去数据库查,很可能导致数据库也挂掉。

预防缓存雪崩的方案:

用redis集群保证缓存服务的高可用性,这样即使一个主redis挂掉,从redis会自动升为主redis。

参考博客:http://carlosfu.iteye.com/blog/2249316

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值