专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java缓存技术详解

Java缓存技术详解

更新时间:2022-03-29 12:06:35 来源:赢咖4 浏览1550次

Java缓存技术是什么?很多小伙伴对此还不是很了解,下面就由小编来告诉大家。

Java缓存技术详解

1.什么是Java缓存?

(1)Cache是​​高速缓存的特殊内存子系统,将常用的数据复制在其中,方便快速访问。

(2)对于速度差异较大的两种硬件/软件,使用协调两者数据传输速度差异的结构,可以称为Cache.

2.缓存的分类

不同层次的系统架构之间,为了加快访问速度,可以有缓存

操作系统磁盘缓存 -> 减少磁盘机械操作

数据库缓存 -> 减少文件系统 I/O

应用程序缓存 -> 减少对数据库的查询

Web 服务器缓存 -> 减少应用程序服务器请求

客户端浏览器缓存 -> 减少对网站的访问

3.操作系统缓存

(1)文件系统提供的磁盘缓存:操作系统会将经常访问的文件内容放入内存,由文件系统管理。

(2)应用程序通过文件系统访问磁盘文件时,操作系统从Disk Cache中读取文件内容,加快了文件读取速度。

(3)Disk Cache由操作系统自动管理,一般不需要人工干预,但要保证足够的物理内存,让操作系统尽可能多的使用Disk Cache,加快文件读取速度

(4)特殊应用对文件系统Disk Cache要求较高。他们会绕过文件系统Disk Cache,直接访问磁盘分区,自行实现Disk

(5)Cache策略。

Oracle的裸设备(raw device)——直接放弃文件系统

InnoDB for MySQL:innodb_flush_method = O_DIRECT

4.数据库缓存

(1)重要性

数据库通常是企业应用系统的核心部分

数据库中存储的数据量通常非常大

数据库查询操作通常非常频繁,有时也很复杂

以上原因导致数据库查询导致非常频繁的磁盘I/O读操作,迫使CPU挂机等待,数据库性能极低

(2)缓存策略

1)查询缓存

以 SQL 为键值缓存查询结果集

一旦查询涉及的表记录被修改,缓存将被自动删除

设置合适的 Query Cache 将大大提高数据库性能

Query Cache 尽量不要大,Qquery Cache 太大会浪费内存。

MySQL:query_cache_size=128M

2)数据缓冲区

数据缓冲区是数据库数据在内存中的容器

数据缓冲区的命中率直接决定了数据库的性能

数据缓冲区越大越好,越多越好

MySQL InnoDB 缓冲区:innodb_buffer_pool_size = 2G

MySQL 建议将缓冲池扩大到服务器物理内存的 60-80%

5.应用缓存

(1)对象缓存

由Hibernate等O/R Mapping框架提供,透明访问,对数据库查询结果进行细粒度缓存,无需对业务代码进行显式编程,是最省事的缓存策略

当软件结构按照O/R Mapping框架的要求设计时,对象缓存的使用将大大减少Web系统的数据库访问请求

精心设计的数据库结构和对象缓存的使用可以提供极高的性能。对象缓存适用于OLTP(在线事务处理)应用

(2)查询缓存

缓存数据库查询结果集,类似于数据库的Query Cache

适用于一些耗时但时效性不高的要求。查询缓存和对象缓存适用于不同的场景,相辅相成

当查询结果集中涉及的表记录被修改时,需要注意清除缓存

(3)页面缓存功能

页面缓存技术不仅可以减轻数据库服务器的压力,还可以减轻应用服务器的压力

好的页面缓存可以大大提高页面渲染速度

页面缓存的难点在于如何清理过期缓存

6. web服务器端缓存

基于代理服务器模式的Web服务器端缓存,如squid/nginx

Web服务器缓存技术用于实现CDN(内容分发网络)

国内主流门户大量采用

无需编程,但仅限于新闻发布网站,页面实时性要求不高

7.基于ajax的浏览器缓存

使用AJAX调用时,在浏览器端缓存数据库

只要不离开当前页面或不刷新当前页面,就可以直接读取缓存数据

仅适用于使用AJAX技术的页面

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>