• 使用Redis的可能引起的三个问题


    缓存穿透

    描述:缓存穿透是有些人恶意请求缓存和数据库中都不存在的数据,如果他请求次数非常的频繁,可能会把数据库打挂掉。

    解决办法:添加以当前key为键的空对象。
    使用布隆过滤器过滤掉空key。
    对于这种恶意攻击,可以进行身份核验或者数据合法检验等。

    缓存击穿

    描述:指大量请求去访问缓存中的一个数据,然后这条数据过期了,然后短时间内大量的请求就打到了数据库上面,可能会把数据库给打挂掉。

    解决办法:对于热点数据,设置永不过期,定时更新缓存。
    使用互斥锁分布式锁,让一个线程去访问数据库将缓存写进来,其他线程访问缓存。

    缓存雪崩

    描述:缓存服务宕机或者缓存同一时间大面积失效,造成大量请求打到了数据库上面,可能将数据库给打挂掉。

    解决办法:给缓存的失效时间加上一个随机值,避免同一时间失效。
    使用互斥锁,同一个key值只允许一个去访问数据库然后写缓存,其他线程访问缓存。

    缓存击穿和缓存雪崩的区别:
    击穿是指一条数据过期引发的一系列问题,而雪崩是指多条数据过期引发的一系列问题,数量不一样这俩。

  • 相关阅读:
    高质量英文文献应该如何查找并且阅读?
    【多线程/JAVA】线程的几种状态总结以及sleep()、wait()方法的区别
    nuxt 不解析HTML结构bug
    自用工具类整理
    记一次逆向分析解密还原Class文件
    数据结构学习:Trie树
    京津冀国际光伏展
    二进制基础
    指针方案介绍
    Scala函数式编程
  • 原文地址:https://blog.csdn.net/qq_45881167/article/details/127697134