抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Java缓存设计

什么是缓存

缓存(Cache)一词源于1967年的一篇电子工程期刊论文(来自维基百科),最开始主要为描述CPU与内存之间的高速缓存,到现在,缓存的定义也被扩展,他可以代指一个具体的事物,如CPU缓存硬盘缓存,这些我们可以统称为硬件缓存。缓存也可以代指一种技术,如浏览器缓存服务器缓存,这些我们可以统称为软件缓存

硬件缓存,可以看做是一块芯片,它被安装在cpu、硬盘这些具体的物体上,在计算器系统运行时,减轻系统负荷,提高数据传输效率。

软件缓存,主要为计算机软件的特性,例如,chrome浏览器会记录网页图片。

简单总结一下,缓存就是将一些频繁使用的数据(热点数据)临时存储起来,方便外部请求获取。

为什么要使用缓存

在使用缓存之前,我们应该确定一件事情,即当前项目是否需要缓存。

一般来说,主要从两个方便:

  • 服务器资源:
    • Cpu占用高(排除死循环的情况),常见的有,正则表达式的计算,如果频繁的计算会导致cpu占用较高。
    • 数据库服务器IO占用高,总是频繁的查询数据库
  • 用户体验,对于web应用来讲,一个页面或接口响应慢,在对其进行优化时,往往都是采用缓存的技术手段

缓存的三步骤

缓存设计历史

本地缓存

  1. 本地缓存,即应用进程内缓存,将数据直接缓存在内存中,最简单的是直接存储在map中,每次请求时,先从map中获取,没有获取到数再从数据库中获取。
  2. 本地缓存相对其他缓存而言,它是一种速度极快的缓存。的但它会导致应用内存占用较高

分布式缓存

  1. 分布式缓存,即进程外部的缓存应用,主要使用NoSQL应用。
  2. 常见的NoSQL应用主要分为4类:
  • K-V存储,以Redis为例
  • 文档数据库,以MongDB为例
  • 列式数据库,以HBase为例
  • 全文搜索引擎,以ElasticSearch为例

多级缓存

顾名思义,多级缓存即本地缓存与分布式缓存的结合。
一级使用本地缓存,二级为分布式缓存。

微服务更新缓存

微服务更新缓存

评论