Redis常见问题:1.缓存穿透2.缓存击穿
一、缓存穿透(防止mysql宕机)
1.解决方案(防止mysql宕机)
在Redis中放入
1.假数据
2.set集合,里面放入所有mysql中的id,再通过布隆过滤器过滤,没有这个id的请求就不在mysql中找了
二、缓存击穿
1.解决方案
1.从Redis处理:一个请求,给这个热点数据加一点时间(避免热点数据过期)
2.分布式锁:Tomcat集群synchronized-Tomcat分布式锁-Redis(避免大量数据访问数据库)
三、缓存雪崩:MySql宕机
大量Redis中的缓存同时到期了,导致大量的请求透视访问数据库,导致数据库宕机
1.解决方案
同时到期原因:缓存预热,设置时间一样
1.在缓存预热时,设置不一样的生存时间
2.加锁
3.边访问边加生存时间
四、缓存倾斜:Redis宕机
1.解决方案
1.花钱:在请求多的节点,搭建主从
2.将数据放在JVM中缓存中
五、双写一致性问题
1.解决方案
1.双删:先删除Redis缓存,再删Redis缓存