Redis缓存穿透,雪崩,击穿问题
缓存的作用: 其实就是CPU与内存之间的桥梁。当查询一条数据的时候,会先到缓存中去查,如果有结果的话,就直接返回,如果没有结果的就会到数据库Mysql中去查,如果mysql中有,就会存入到redis中,然后然后查到的这条数据。如果连mysql中都没有,就真的没有数据了
缓存穿透问题
缓存穿透:缓存和数据库中都没有这条数据
解决方案: 1、 如果mysql中没有这条数据,那么就在redis中缓存一个空对象 这种方案解决的是一个key-value没有的情况,但如果每次查询,数据库和redis中都没有数据的话,那么还是会去访问数据库的。
所以这种方案针对的是对同一个key-value多次访问的情况。 而且这种方案还有一个坏处就是让redis中存入大量的空对象数据
2、布隆过滤器的解决方案
缓存击穿:数据库有数据,缓存中没有数据(某一条数据失效)
1、 这条数据没人访问过 2 、数据刚好失效(redis把这条数据给自动删除掉了)这条数据刚好还是热点数据:此时多线程大并发的访问这条数据,就会导致mysql崩掉 解决方案:加入分布式锁
缓存雪崩:redis挂了或者大部分数据失效了
redis搭建集群 大部分数据失效:错开数据过期的时间
如果出现了雪崩:降级、熔断
下一篇:
oracle文件管理——控制文件