zoukankan      html  css  js  c++  java
  • 几种常见的缓存异常场景

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

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

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

  • 相关阅读:
    将Vim改造为强大的IDE
    Ubuntu首次开启root用户
    ssh-keygen实现免密码登陆
    Ubuntu下配置samba服务器实现文件共享
    Ubuntu下Apache+php+mysql网站架设详解
    IIS支持PHP
    详解C/C++预处理器
    学C++之感悟
    return *this和return this的区别
    const 的全面总结
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14427918.html
Copyright © 2011-2022 走看看