缓存失效及解决方法

一.缓存穿透

如果缓存和数据库中都不存在的数据,比如数据库某个物品编号只到8000,而有人恶意的访问一个不存在的编号,一直访问10000编号,那么在数据库和缓存中都不存在,在高并发情况下,会不停查询数据库,造成数据库压力大。

解决:

把空结果也加入缓存,设置短暂过期时间

二.缓存雪崩

雪崩是指在某一时间,在缓存中我们放置的大量的key同时失效,则大量的请求全部直接到达数据库,造成数据库压力过大。

解决:

在原有失效时间上加一个随机值,比如1-5分钟,这样可以防止缓存集体失效

三.缓存击穿

缓存击穿 指 并发查同一条数据。缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力

解决:

查询时加锁,大量的并发只让一个人去查数据库,其他请求等待,查询放入缓存之后释放锁,这样其他请求就可以从缓存中获取数据,不用去查数据库。

**区别:**缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值