美文网首页java面试
缓存的设计和使用

缓存的设计和使用

作者: AKyS佐毅 | 来源:发表于2018-09-05 22:57 被阅读133次

缓存的设计和使用

  • 1、缓存的收益与成本

    • 收益
      • 1、加速读写:通过缓存加速读写速度:CPU L1/L2/L3 Cache 、Linux page Cache加速硬盘读写、浏览器缓存、Ehcache缓存数据库结果。

      • 2、降低后端的负载:业务端使用redis降低后端MySQL负载等。

    • 成本
      • 1、 数据不一致: 缓存层和数据层有时间窗口不一致,和更新策略有关。

      • 2、代码维护成本:多了一层缓存逻辑。

      • 3、运维成本: 例如 redis cluster

    • 使用场景
      • 1、对高消耗的SQL: join结果集/分组统计结果缓存。

      • 2、加速请求响应

        • 1、利用redis/Memcache优化IO响应时间。
      • 3、大量写合并为批量写

        • 1、如计数器先redis累加再批量写DB。
  • 2、缓存更新策略

    • 1、LRU/LFU/FIFO算法剔除: 例如maxmemory-policy

    • 2、超时剔除:例如expire过期数据的删除。

    • 3、主动更新:开发控制生命周期。

      image
    • 建议:

      • 1、低一致性:最大内存和淘汰策略。

      • 2、高一致性:超时剔除和主动更新结合,最大内存和淘汰策略兜底。

  • 3、缓存粒度问题

    image
    • 缓存粒度控制- 三个角度
      • 1、通用性:全量属性更好。

      • 2、占用空间:部分属性更好。

      • 3、代码维护:表面上全量属性更好。

  • 4、缓存穿透 - 大量请求不命中

    image
    • 1、业务代码自身问题。

    • 2、恶意攻击、爬虫等等。

    如何发现问题

    - 1、业务的相应时间。
    
    - 2、业务本身问题。
    - 2、相关指标: 总调用数,缓存层命中数、存储层命中数。
    

    如何解决问题

    • 1、缓存空值的问题

      对于空数据,要设置过期时间。


      image
    • 2、布隆过滤器拦截

145天以来,Java架构更新了 428个主题,已经有91位同学加入。微信扫码关注java架构,获取Java面试题和架构师相关题目和视频。上述相关面试题答案,尽在Java架构中。

相关文章

  • 缓存的设计和使用

    缓存的设计和使用 1、缓存的收益与成本收益1、加速读写:通过缓存加速读写速度:CPU L1/L2/L3 Cache...

  • 10.LRU缓存

    面试题 16.25. LRU缓存 难度中等18 设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目...

  • LRU缓存

    146. LRU缓存 设计和实现一个LRU(最近最少使用)的缓存机制。它可以支持以下操作: get 和 put 。...

  • 干货:大型互联网公司分布式缓存的优秀实践和线上案例

    一、缓存设计的核心要素 我们在应用中决定使用缓存时,通常需要进行详细的设计,因为设计缓存架构看似简单,实则不然,里...

  • Bitmap的缓存结构设计

    1. 整体思路设计 采用三级缓存结构:内存-磁盘-网络,缓存使用的是LruCache算法,最近最少使用缓存算法 内...

  • LRU

    LRU:Least Recently Used 最近最少使用 题目要求: 设计和构建一个“最近最少使用”缓存,该...

  • Redis原理&设计

    缓存原理&设计 本章学习目标 理解缓存的使用场景(重点) 理解缓存原理(重点) 了解常见缓存以及分类(重点) 理解...

  • LeetCode-146- LRU 缓存机制

    LRU 缓存机制 题目描述:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 ...

  • 设计一套具备LRU过期策略的缓存程序

    考察点: 缓存容器的设计:LinkedHashMap的使用 缓存容器并发考虑 LinkedHashMap中init...

  • 如何优雅的设计和使用缓存?

    1.确认是否需要缓存 在使用缓存之前,需要确认你的项目是否真的需要缓存。使用缓存会引入的一定的技术复杂度,后文也将...

网友评论

    本文标题:缓存的设计和使用

    本文链接:https://www.haomeiwen.com/subject/vyazwftx.html