「java工程的缓存实现」java常用缓存技术

博主:adminadmin 2022-11-24 19:19:06 55

今天给各位分享java工程的缓存实现的知识,其中也会对java常用缓存技术进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java怎么实现map 缓存技术

/**

 * 缓存池

 * @author xiaoquan

 * @create 2015年3月13日 上午10:32:13

 * @see

 */

public class CachePool {

    private static CachePool instance;//缓存池唯一实例

    private static MapString,Object cacheItems;//缓存Map

     

    private CachePool(){

        cacheItems = new HashMapString,Object();

    }

    /**

     * 得到唯一实例

     * @return

     */

    public synchronized static CachePool getInstance(){

        if(instance == null){

            instance = new CachePool();

        }

        return instance;

    }

    /**

     * 清除所有Item缓存

     */

    public synchronized void clearAllItems(){

        cacheItems.clear();

    }

    /**

     * 获取缓存实体

     * @param name

     * @return

     */

    public synchronized Object getCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return null;

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name);

        if(cacheItem.isExpired()){

            return null;

        }

        return cacheItem.getEntity();

    }

    /**

     * 存放缓存信息

     * @param name

     * @param obj

     * @param expires

     */

    public synchronized void putCacheItem(String name,Object obj,long expires){

        if(!cacheItems.containsKey(name)){

            cacheItems.put(name, new CacheItem(obj, expires));

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name);

        cacheItem.setCreateTime(new Date());

        cacheItem.setEntity(obj);

        cacheItem.setExpireTime(expires);

    }

    public synchronized void putCacheItem(String name,Object obj){

        putCacheItem(name,obj,-1);

    }

     

    /**

     * 移除缓存数据

     * @param name

     */

    public synchronized void removeCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return;

        }

        cacheItems.remove(name);

    }

     

    /**

     * 获取缓存数据的数量

     * @return

     */

    public int getSize(){

        return cacheItems.size();

    }

}

public class CacheItem {

    private Date createTime = new Date();//创建缓存的时间

    private long expireTime = 1;//缓存期满的时间

    private Object entity;//缓存的实体

     

    public CacheItem(Object obj,long expires){

        this.entity = obj;

        this.expireTime = expires;

    }

     

    public boolean isExpired(){

        return (expireTime != -1  new Date().getTime()-createTime.getTime()  expireTime);

    }

        /**

         * 省略getter、setter方法

         */

}

java缓存技术有哪些

常见的java缓存框架有:

OSCache

OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。

OSCache有以下特点:

缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。

拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。

永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。

支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。

缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)。

官方网站

Java Caching System

JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供管理各种动态缓存数据来加速动态web应用。

JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。

动态内容和报表系统能够获得更好的性能。

如果一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。

官方网站

EHCache

EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试。

官方网站

JCache

JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。

官方网站

ShiftOne

ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

官方网站

SwarmCache

SwarmCache是一个简单且有效的分布式缓存,它使用IP multicast与同一个局域网的其他主机进行通讯,是特别为集群和数据驱动web应用程序而设计的。SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。

SwarmCache使用JavaGroups来管理从属关系和分布式缓存的通讯。

官方网站

TreeCache / JBossCache

   JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能。缓存数据被自动复制,让你轻松进行JBoss服务器之间 的集群工作。JBossCache能够通过JBoss应用服务或其他J2EE容器来运行一个MBean服务,当然,它也能独立运行。

JBossCache包括两个模块:TreeCache和TreeCacheAOP。

TreeCache --是一个树形结构复制的事务处理缓存。

TreeCacheAOP --是一个“面向对象”缓存,它使用AOP来动态管理POJO(Plain Old Java Objects)

注:AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。

官方网站

WhirlyCache

Whirlycache是一个快速的、可配置的、存在于内存中的对象的缓存。它能够通过缓存对象来加快网站或应用程序的速度,否则就必须通过查询数据库或其他代价较高的处理程序来建立。

JAVA几种缓存技术介绍说明

1、OSCache

OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何java应用程序的普通的缓存解决方案。

OSCache有以下特点:

(1)缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。

永久缓存--缓存能随意的写入硬盘,因此答应昂贵的创建(eXPensive-to-create)数据来保持缓存,甚至能让应用重启。

(2)支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。

缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(假如默认性能不需要时)。

2、Java Caching System

JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序。它是通过提供治理各种动态缓存数据来加速动态web应用。

JCS和其他缓存系统一样,也是一个用于高速读取,低速写入的应用程序。

动态内容和报表系统能够获得更好的性能。

假如一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性。

3、EHCache

EHCache 是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依靠性,全面的文档和测试。

4、JCache

JCache是个开源程序,正在努力成为JSR-107开源规范,JSR-107规范已经很多年没改变了。这个版本仍然是构建在最初的功能定义上。

5、ShiftOne

ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib,就像一个轻量级的配置缓存工作状态的框架。

6、SwarmCache

SwarmCache是一个简单且有效的分布式缓存,它使用ip multicast与同一个局域网的其他主机进

行通讯,是非凡为集群和数据驱动web应用程序而设计的。

SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持。

SwarmCache使用JavaGroups来治理从属关系和分布式缓存的通讯。

扩展资料

Java中缓存存在的原因:

一 般情况下,一个网站,或者一个应用,它的一般形式是,浏览器请求应用服务器,应用服务器做一堆计算后再请求数据库,数据库收到请求后再作一堆计算后把数据 返回给应用服务器。

应用服务器再作一堆计算后把数据返回给浏览器,这个是一个标准流程。但是随着互连网的普及,上网的人越来越多,网上的信息量也越来越多。

数据库每秒中接受请求的次数也是有限的,如果利用有限的资源来提供尽可能大的吞吐量呢。一个办法:减少计算量,缩短请求流程(减少网络io或者硬盘io),这时候缓存就可以大展手脚了。

缓存的基本原理就是打破上图中所描绘的标准流程,在这个标准流程中,任何 一个环节都可以被切断.请求可以从缓存里取到数据直接返回。

如何用java实现缓存

java有自己的缓存输入输出类,比如 InputStream,FileOutputStram等 具体可以查看API,

要想自己实现的话,很简单,设置一个足够大的字节数组就可以了,把需要的东西放进去,就是个缓存。

关于java工程的缓存实现和java常用缓存技术的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。