java多级缓存_1. java缓存-多级缓存概述

java缓存

##什么是缓存

Cache是高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。

凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为Cache8。

从开发的角度看,缓存就是用来减少我获取数据时间的东西。

为什么要使用缓存

列表展示不同存储方式,获取缓存的时间

获取路径

耗时

从数据库读取(硬盘/磁盘)

十几毫秒

从远程分布式缓存读取(内存+网络)

0.5毫秒

从内存中读取1M数据

十几微妙

通过上述表格,不同的数据获取方式,耗时存在量级的差距,因此使用缓存是必要的,尤其是频繁读取的信息数据。

##缓存类型

根据缓存数据的存储位置,把缓存分为:进程内缓存、进程外缓存,也可以看做一级缓存、二级缓存。

###进程内缓存:

a 可以看做该缓存和程序在同一台电脑/服务器中,即:java虚拟机的内存中,你的程序部署到哪台服务器,那么该缓存就在哪台服务器中。

b 进程内缓存,因为每台服务器都会有数据的缓存,那么就存在内存浪费,每台机器都对同一份数据进行缓存。

c 因为每台服务器都对同一份数据进行缓存,那么就存在不同服务器间,数据不一致的问题。

d 常见的进程内缓存示例:List、Map、guava cache、ehcache等。

进程外缓存

a 缓存数据不在本服务器中(本服务器的进程中没有进行数据缓存,因此称为进程外缓存),而是在专门的缓存服务器中。

b 因为需要访问进程外的缓存,因此存在其他消耗,例如:网络消耗、序列化消耗等。

c 因为是大家同一请求访问进程外缓存,因此不存在数据一致性的问题。

d 又因为缓存只有一台,所以存在缓存服务宕机,所有的缓存都无法访问,因此可以考虑集群。

e 常见的进程外缓存有:redis,memcache,ehCache。

通过上述:进程内缓存就是我们常用的存储在java虚拟机内存的缓存数据;进程外缓存就是有专门的缓存服务器(缓存数据也是存储在内存中),对外提供统一的缓存。

你可能感兴趣的:(java多级缓存)