zoukankan      html  css  js  c++  java
  • 缓存

    缓存又分进程内缓存和分布式缓存两种:分布式缓存如redismemcached等,还有本地(进程内)缓存如ehcacheGuavaCacheCaffeine等。

    ===》

    命中率

    • 命中率=命中数/(命中数+没有命中数)当某个请求能够通过访问缓存而得到响应时,称为缓存命中。缓存命中率越高,缓存的利用率也就越高。

    最大空间

    • 缓存中可以容纳最大元素的数量。当缓存存放的数据超过最大空间时,就需要根据淘汰算法来淘汰部分数据存放新到达的数据。

    淘汰算法

    • 缓存的存储空间有限制,当缓存空间被用满时,由缓存淘汰算法来处理,设计适合自身数据特征的淘汰算法能够有效提升缓存命中率。

    ====》

       FIFO(first in first out)
    • 「先进先出」。最先进入缓存的数据在缓存空间不够的情况下(超出最大元素限制)会被优先被清除掉,以腾出新的空间接受新的数据。策略算法主要比较缓存元素的创建时间。「适用于保证高频数据有效性场景,优先保障最新数据可用」
       LFU(less frequently used)
    • 「最少使用」,无论是否过期,根据元素的被使用次数判断,清除使用次数较少的元素释放空间。策略算法主要比较元素的hitCount(命中次数)。「适用于保证高频数据有效性场景」
     LRU(least recently used)
    • 「最近最少使用」,无论是否过期,根据元素最后一次被使用的时间戳,清除最远使用时间戳的元素释放空间。策略算法主要比较元素最近一次被get使用时间。「比较适用于热点数据场景,优先保证热点数据的有效性。」

    进程缓存:

    进程缓存的话,一般可以在应用启动的时候,把需要的数据加载到系统中。

    更新缓存的话可以采取定时更新(实时性不高)。具体实现的话就是在应用中起一个定时任务(「ScheduledExecutorService」「TimerTask」等)

    本地缓存比较---》

    分布式缓存:

    分布式缓存是与应用分离的缓存组件或服务,其最大的优点是自身就是一个独立的应用,与本地应用隔离,多个应用可直接的共享缓存。常见的分布式缓存有redisMemCache等。

    ------》

    缓存雪崩:

    大量缓存同一时间段集体失效,或者缓存整体不能提供服务,导致大量的请求全部到达数据库 对数据CPU和内存造成巨大压力,严重的会造成数据库宕机

    缓存穿透:

    查询一个不存在的数据,每次通过接口或者去查询数据库都查不到这个数据

    缓存击穿:

    指缓存里面的一个热点key在某个时间点过期。针对于这一个key有大量并发请求过来然后都会同时去数据库请求数据,瞬间对数据库造成巨大的压力。

  • 相关阅读:
    .NetCore 3.1和.NetCore 5.0 中WebApi的请求参数的验证方法
    php 使脚本持续的运行
    Elasticsearch es三种分页方式和对比
    es 大批量写入提高性能的策略
    php 使用多进程批量插入数据
    【转】EM算法MATLAB代码及详细注解
    【转】详解EM算法与混合高斯模型(Gaussian mixture model, GMM)
    【转】高斯混合模型
    【转】二维高斯分布(Two-dimensional Gaussian distribution)的参数分析
    word使用dot模板以spring word 模板为例
  • 原文地址:https://www.cnblogs.com/KL2016/p/14609661.html
Copyright © 2011-2022 走看看