• 几种常见的缓存异常场景


      常见的缓存异常场景有:缓存穿透、缓存击穿、缓存雪崩等,下面总结一下几种常见的异常。

    • 缓存穿透
      • 概念:缓存穿透是指用户请求的数据在缓存中没有命中,在数据库中也不存在,导致用户每次请求该数据都要直接去数据库中查一遍再返回空。
      • 危害:恶意攻击者可以不断请求系统中不存在的数据导致大量请求落在数据库上造成数据库压力过大或击垮数据库系统。
      • 解决方案:①布隆过滤器(专门检测集合中是否存在特定的元素)②返回空对象,将空对象也写入到缓存中。
    • 缓存击穿
      • 概念:指在大并发集中对某个key进行访问的时候该key失效的瞬间,持续的大并发直接穿破缓存落在数据库上。
      • 危害:数据库瞬时压力骤增,造成大量的请求阻塞。
      • 解决方案:①使用互斥锁(mutex key),同一时间只有一个线程读数据库然后写缓存,其他线程阻塞。②热点数据设置永不过期。  
    • 缓存雪崩
      • 概念:指缓存中的key大批量同时失效,导致大量查询请求落在数据库上。  
      • 危害:数据库压力过大甚至宕机。
      • 解决方案:①均匀不同key的过期时间;②加互斥锁;③缓存永不过期;④双层缓存策略(主备两层缓存,主缓存失效后从备份缓存里同步)

    参考:https://mp.weixin.qq.com/s/PhAyCMsYcGFfH8kJMsXkJQ    

  • 相关阅读:
    ASP.NET 2.0 中的主版頁面 Master Pages
    初探ERP的数据库框架
    node.js 入门,
    mysql 测试
    zendframework 内置view
    session.save_Handler
    读mysql技术内幕 InnoDB 第三章
    php 的命名空间 看鸟哥后的随笔
    mysql innodb技术内幕 ~读 1,2,3 复习
    php 无乱码截取中文
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14427918.html
Copyright © 2020-2023  润新知