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

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

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

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

  • 相关阅读:
    webpack入门
    Javascript隐式转换
    一个最小手势库的实现
    运用JS设置cookie、读取cookie、删除cookie
    不同浏览器下兼容文本两端对齐
    使用CSS3实现一个3D相册
    JavaScript 火的有点过头了,但又能火多久呢?
    强大的css3
    CSS3与页面布局学习总结
    红米手机真机调试问题记录
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14427918.html
Copyright © 2011-2022 走看看