标签:
Java缓存机制概述-1
一、 概述
所谓缓存就是把程序经常使用的对象读到内存中,以后使用直接从内存中读取即可。一般针对的是:数据库、硬盘中的资源读取耗费大量时间。缓存是一种典型的空间换时间的方案。
Java中使用最多的思想:key-value缓存,一般用Map实现。
1.0 缓存需要解决的问题
注意:
1.1 缓存分类
按照格式分类:
按照功能分类:
1.2 缓存的一般使用步骤
1.3 操作系统缓存
文件系统提供了Disk Cache:操作系统会把经常访问的内容放入到内存中,由文件系统来管理。当应用程序通过文件系统访问磁盘文件时,操作系统会先从Disk Cache中读取,加快了文件读取速度。
注意特殊的应用程序对文件系统的Disk Cache有很高的要求,会绕开文件系统的缓存,直接访问磁盘分区,自己实现Disk Cache策略。比如Oracle的raw device和MySQL的InnoDB:innodb_flush_method=O_DIRECT。
查看Windows的任务管理器可以看到当前缓存的数目。
1.4 HTTP缓存
浏览器缓存实现一般是:如果浏览器第一次请求服务器时设定允许Cache,服务器端在给资源的同时,在响应头:Last-Modified中告诉浏览器该资源的最后修改时间和一个Etag值,同时浏览器把该资源缓存到本地,下次请求时候,请求头中:IF-None-Match携带Etag信息,然后IF-Modified-Since携带修改时间。服务器接收到之后,进行比对,如果资源没有修改过,就发304状态码,这样浏览器直接使用本地缓存即可,否则返回200状态码和新的资源以及Last-Modified、Etag值。
1.5 对象缓存
由O/R Mapping框架例如Hibernate提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程,降低对数据库的访问请求,对象缓存适合OLTP(联机事务处理)应用,良好的数据库结构和利用对象缓存,能提供极高的性能。
Hibernate中使用注解即可实现缓存,Hibernate会拦截对象的CRUD操作,针对对象的读取操作自动缓存,针对对象的修改操作自动清理缓存。
OLTP类型的Web应用,由于可以进行服务器端的水平集群扩展,最终的系统瓶颈在数据库访问处,那个框架能够最大限度的降低数据库访问,降低数据库访问压力,那个框架提供的性能越佳。
1.6 查询缓存
1.7 页面缓存
1.8 分布式缓存
标签:
原文地址:http://www.cnblogs.com/lhyblog/p/5816242.html