1.概述
一个热点数据在高并发情况下过期时间到了,会导致大量流量查询redis为null,进而请求数据库进行更新数据,从流量上来说请求打到了数据库上,这种情况可能会造成mysql服务崩溃。
2. 解决方式之一(加锁解决之本地锁)
如果部署的服务是单机服务完全可以靠本地锁解决这个问题
具体流程查缓存->缓存存在直接返回
查缓存->缓存不存在->sync方法再去查缓存是否存在,不存在则先查数据库,查到数据库set进redis->直接返回set的数据
**为啥需要再去查缓存才开始查数据库
**列子:A B C一起去查询某个数据 缓存不存在了 如果按不再去查缓存的话,A先获取了sync资源,然后已经set了数据库查到的值了,但是这个时候B排队又得到了资源,即便A已经设置缓存成功了,但是B还是会去重新查询数据库又设置缓存,明显不合理,因此可以继续加判断如果缓存查到了直接返回更合理。