您当前的位置:首页 > 互联网教程

Java的应用缓存cache如何入门

发布时间:2025-05-21 12:39:18    发布人:远客网络

Java的应用缓存cache如何入门

一、Java的应用缓存cache如何入门

跟session不是一个概念,简单的谈下我个人对缓存的看法吧,你可以把它想象成一个容量大的hashMap,可以往里面get set数据,由于数据存在内存当中而不是数据库中,所以存取速度较快。

java常用的缓存有:ehcache, oscache,jcache,这些cache都是单机的,即存在本机的内存中,另外分布式的cache我用过memcache,它被独立部署在一台服务器上,可以实现多个客户端共用缓存。

一般用到缓存的场景:1.在处理并发请求,需要及时响应的。2.加快系统响应速度。举个例子:比如购物网站有售卖物品的排行榜,这种数据都是由数据库中N多表关联查询排序得到的,那么就可以存在缓存当中,当页面请求查看排行榜时直接取缓存中的数据。后台定时任务根据一定的时间间隔计算好排行结果,再替换到当前缓存中。这就是一个简单的缓存应用示例。

具体用法你可以参考各个缓存的说明文档,百度一下很多的。纯手打,望采纳~

二、关于java的io读写,缓冲区是如何提高读写效率的

给你一个例子自己看看吧,加深理解

我们知道Java中一般的输入输出流类都是用单字节的读取方法来进行I/O操作的,也就是说每次只读写一个字节的数据,这种方法显然繁琐低效。如果从设备读取10M的文件,每次读取一个字节,完成操作将需要做10M/次I/O操作,I/O操作又是一件相当耗时的事情,无疑在很大程度上降低了系统的性能。

Java中专门提供提高I/O效率的缓冲类,这好比在数据读写时提供一个临时缓冲区,每次读取一个缓冲区大小的数据,将这数据库一次性写入目标设备。下图中分别为两种读取方式。

举个简单例子,在A地有10000本书需要搬到B地,如果一次搬1本,需要10000次。如果每次取1000本放到一个货车上,运到B地,需要10次完成。货车相当于是缓存区。同样道理,开设一个数据缓存区每次读取一数据块对于提高读取效率有显著提升。下面用一个具体代码示例来表示二者的性能差别。

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

public static void main(String args[]) throws IOException{

long startTime1= System.currentTimeMillis();

TestBuffer.readWriteWithBuffer(from,"f:/2.MP3");

long endTime1= System.currentTimeMillis();

System.out.println("使用缓冲区读取耗时:"+(endTime1- startTime1)+"ms");

long startTime= System.currentTimeMillis();

TestBuffer.readWrite(from,"f:/3.MP3");

long endTime= System.currentTimeMillis();

System.out.println("直接读取耗时:"+(endTime- startTime)+"ms");

public static void readWrite(String from, String to) throws IOException{

in= new FileInputStream(from);

out= new FileOutputStream(to);

/***************************************************************************

public static void readWriteWithBuffer(String from, String to)

OutputStream outBuffer= null;

inBuffer= new BufferedInputStream(new FileInputStream(from));

outBuffer= new BufferedOutputStream(new FileOutputStream(to));

运行例子时会根据mp3文件的大小决定运行时间的长短,尽量使用小一点的mp3文件,运行时需耐心等待一段时间

三、Java 缓存有哪些

1. JVM内部缓存 Java堆内存:用于存储对象实例,是Java缓存管理的重要部分。方法区:存储已被虚拟机加载的类信息、常量、静态变量等数据,由Java虚拟机自动管理。

2.应用级缓存应用缓存:由开发者在Java应用程序中实现的缓存机制,用于减少与数据库的交互,提高系统响应速度。页面缓存:也属于应用级缓存的一种,常用于Web应用中,缓存页面内容以减少服务器负载。缓存策略:开发者需要自行设计并实现相应的缓存策略,如LRU策略、FIFO策略等。

3.数据库查询缓存存储查询结果:用于存储数据库查询结果,避免重复查询数据库,提高系统性能。实现方式:可以使用数据库自身的查询缓存功能,或使用ORM框架提供的查询缓存功能。

4.分布式缓存系统解决数据共享问题:主要用于解决多台服务器之间的数据共享和访问问题。常见系统:包括Redis、Memcached等,提供了高性能的数据读写和分布式功能。应用场景:广泛应用于大规模互联网应用,实现数据的共享和访问控制。

每种缓存类型都有其特定的应用场景和优势,开发者可以根据实际需求选择合适的缓存方案。