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

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

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

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

  • 相关阅读:
    Linux设备模型 学习总结
    平衡二叉树
    数字在排序数组中出现的次数
    两个链表的第一个公共节点
    第一个只出现一次的字符
    丑数
    把数组排成最小的数
    剑指offer 连续子数组的最大和
    查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部
    for each
  • 原文地址:https://www.cnblogs.com/smallzhen/p/14427918.html
Copyright © 2011-2022 走看看