zoukankan      html  css  js  c++  java
  • 缓存击穿、缓存穿透、缓存雪崩

    参考文章:缓存穿透、缓存击穿、缓存雪崩概念及解决方案

    一. 缓存击穿

    1. 概念

      缓存击穿指的是大量的请求同时查询一个 key 时,此时这个key正好失效了,所有请求击穿到后端数据库系统进行查询,使数据库压力过大,甚至使数据库服务被压死。

    2. 解决方案

    1. 直接加锁:当缓存未命中,则从数据库获取数据并更新到缓存中;
    2. 定时任务:定时刷新缓存;
    3. 多级缓存:一级缓存失效时间短,二级缓存失效时间长,一级缓存未命中时对 key 加锁,从数据库获取到数据更新到缓存并释放锁,后面线程从二级缓存获取数据;

    二. 缓存穿透

    1. 概念

      访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。

    2. 解决方案

    1. 采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;
    2. 第一次在DB查询不到时,在缓存中为这个key的缓存一个空值,下次直接返回;

    三. 缓存雪崩

    1. 概念

      大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。

    2. 解决方案

      可以给缓存设置过期时间时加上一个随机值时间,使得每个key的过期时间分布开来,不会集中在同一时刻失效。

  • 相关阅读:
    具有快表的地址变换机构
    npm更换淘宝镜像
    内存扩充技术
    内存管理的概念
    内存的基础知识
    102. 二叉树的层序遍历
    104. 二叉树的最大深度
    206. 反转链表
    mysql 多字段查询,全局搜素
    java 处理html转义字符
  • 原文地址:https://www.cnblogs.com/virgosnail/p/9789927.html
Copyright © 2011-2022 走看看