redis穿透问题

1.概述

一个热点数据在高并发情况下过期时间到了,会导致大量流量查询redis为null,进而请求数据库进行更新数据,从流量上来说请求打到了数据库上,这种情况可能会造成mysql服务崩溃。

2. 解决方式之一(加锁解决之本地锁)

如果部署的服务是单机服务完全可以靠本地锁解决这个问题

具体流程查缓存->缓存存在直接返回 

查缓存->缓存不存在->sync方法再去查缓存是否存在,不存在则先查数据库,查到数据库set进redis->直接返回set的数据

**为啥需要再去查缓存才开始查数据库

**列子:A B C一起去查询某个数据 缓存不存在了 如果按不再去查缓存的话,A先获取了sync资源,然后已经set了数据库查到的值了,但是这个时候B排队(sync会自旋)又得到了资源,即便A已经设置缓存成功了,但是B还是会去重新查询数据库又设置缓存,明显不合理,因此可以继续加判断如果缓存查到了直接返回更合理。

3. 解决方式之一(加锁解决之分布式锁)

参考我的http://t.csdn.cn/pQte3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值