• 【干货!!】三句话搞懂 Redis 缓存穿透、击穿、雪崩-LMLPHP最后,我们会发现这个 bit 数组里只有位置 3 还是空着的。如果此时来了一个新的 key4 通过三个Hash算法求出的哈希值为 1、2、3,我们则可以断定 key4 一定不存在。【干货!!】三句话搞懂 Redis 缓存穿透、击穿、雪崩-LMLPHP

    布隆过滤器的原理还是比较简单的。这里我们需要注意,布隆过滤器可能存在一定误判的可能性,但它依然可以帮助你拦截掉大部分一定不存在的数据。

    缓存击穿

    关键词定点打击

    试想如果所有请求对着一个 key 照死里搞,这是不是就是一种定点打击呢?

    怎么理解呢?举个极端的例子:比如某某明星爆出一个惊天狠料,海量吃瓜群众同时访问微博去查看该八卦新闻,而微博 Redis 集群中数据在此刻正好过期了,那么无数的请求则直接打到了微博系统的物理 DB 上,DB 瞬间挂了。

    解决方案

    1、热点数据永远不过期
    

    比如我们可以将某个 key 的缓存时间设置为 25 小时,然后后台有个 JOB 每隔 24 小时就去批量刷新一下热点数据。就可以解决这个问题了

    2、使用互斥锁
    

    容易影响吞吐量,大部分项目设置热点 key 永不过期就妥妥的了

    缓存雪崩

    关键词:Redis 崩了,没有数据了

    这里的 Redis 崩了指的并不是 Redis 集群宕机了。而是说在某个时刻 Redis 集群中的热点 key 都失效了。

    如果集群中的热点 key 在某一时刻同时失效了的话,试想海量的请求都将直接打到 DB 上,DB 可能在瞬间就被打爆了。

    解决方案

    1、Redis 失效时间加上随机数
    

    Redis 失效时间加上随机数,是一种比较取巧的解决方案。在一定程度上减轻了 DB 的瞬时压力,但是这种方案也在一定程度上增加了维护的成本。

    2、Redis 永不过期
    

    实现方案在上文中简单提过了

    总结

    最后我们再回归到主题!

    如何轻松的通过联想的方式来区分 Redis 缓存穿透、击穿、雪崩的区别
    

    如果你觉得文章写的还不错,快给笔者点个赞吧,你的鼓励是笔者创作最大的支持!!!!!!

    08-25 11:39