zoukankan      html  css  js  c++  java
  • 缓存雪崩

    一、缓存有效期

            一般情况下我们会给缓存的key设置有效时间,当key过期时,会被自动删除。

            设置有效期的作用如下:

            1、提高系统吞吐量。

            2、保持数据一致性的重要机制。

            3、避免堆积冗余数据。

            设置有效时间的方式:

            1、可设置的值:秒/毫秒;指定时间戳;设置为永久。

            2、在spring框架中,可以使用spring cache框架,通过配置cacheManager的有效期属性来实现,如在RedisCacheManager 中配置 expire 属性。

    二、什么是缓存雪崩

            缓存雪崩是因为缓存失效导致数据未加载到内存中,或者缓存时间大面积地失效,从而导致所有请求都会去查数据库,导致数据库、CPU和内存负载过高,甚至宕机。

    三、缓存雪崩的原因及解决方案

            1、缓存大面积失效

            解决方案:避免缓存设置相近的有效期;为有效期增加随机值;统一规划有效期,失效时间均匀分布。

            2、对热点数据持续高并发

            解决方案:使用互斥锁:jvm锁机制;分布式锁机制。

            3、有效期本身的缺陷

            解决方案:缓存永不过期,异步更新。

            优点:不阻塞线程,用户体验好,不会出现雪崩效应。

            缺点:不保证一致性,代码复杂度增大(每个value值都要维护异步更新代码),容易堆积垃圾数据。




       

    1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
    2. 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。
    3. 设置热点数据永远不过期。
  • 相关阅读:
    kettle 3:java调用transformation
    SEO网站优化笔记
    图案设计的素材
    TweenLite 使用详解(译文)
    flv文件修复文件头
    一个拼图素材
    外螺旋矩阵排列
    20160226.CCPP体系详解(0036天)
    tcp三次握手与四次分手
    docker 应用数据的管理之bind mounts
  • 原文地址:https://www.cnblogs.com/KingAndPig/p/13938935.html
Copyright © 2011-2022 走看看