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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010652576/article/details/82590189

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虚拟机内存的缓存数据;进程外缓存就是有专门的缓存服务器(缓存数据也是存储在内存中),对外提供统一的缓存。

展开阅读全文

没有更多推荐了,返回首页