美文网首页中间件
缓存穿透,缓存击穿,缓存雪崩解决方案分析

缓存穿透,缓存击穿,缓存雪崩解决方案分析

作者: 任嘉平生愿 | 来源:发表于2018-10-11 20:01 被阅读46次

    缓存穿透

    缓存穿透是指查询一个一定不存在的数据,由于缓存不命中就会查询DB,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

    解决方案

    1.隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

    2.如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

    缓存雪崩

    缓存在某一时刻同时失效(多个key),请求全部转发到DB,DB瞬时压力过大造成缓存雪崩。

    每个key都需要访问的时候合在一起就对DB造成了很大的压力。

    缓存击穿

    热点数据一个key失效导致大量请求,请求全部转发到DB,DB瞬时压力过大造成缓存雪崩。

    解决方案

    1.使用互斥锁,再大量的请求导致缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作,比如Redis的SETNX。只有拿到值的时候再返回,不用查询DB。

    相关文章

      网友评论

        本文标题:缓存穿透,缓存击穿,缓存雪崩解决方案分析

        本文链接:https://www.haomeiwen.com/subject/ucliaftx.html