redis缓存穿透击穿雪崩

穿透

       原因:  客户端一直在查数据库没有的数据,导致没有查缓存然后直接到了数据库。

        解决方式: 1. 布隆过滤器   :预先把数据ID全存在过滤器里面(实时更新),当在查缓存为空时,再判断过滤器里面有没                                     有,没有的话直接返回,有的话再查数据库 。

                            2. 预存一个空数据然后在击中的时候进行判断

         

击穿

         原因 : 客户端查一个正好过期的value,大量请求进来没有查缓存然后直接到了数据库。

          解决方式 :  1.当缓存没有数据时,查数据库的时候加锁,排队只有一个线程拿到锁,然后查数据库更新缓存。其他线程等                                  待一会,然后再从缓存取。

                                 

                           2.用一个定时器在数据失效的时候定时进行更新

                           3.设置热点数据永远不过期

 

雪崩

            原因 :大量缓存到期, 客户端大量请求,没有走缓存,直接到数据库,导致数据库奔溃。

             解决方式: 1.如击穿

                               2..分布式部署缓存  过期时间设置随机不固定      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章