java map缓存

/**

 * 缓存池

 * @author xiaoquan

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

 * @see

 */

public class CachePool {

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

    private static Map<String,Object> cacheItems;//缓存Map

    

    private CachePool(){

        cacheItems = new HashMap<String,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方法

         */

}

原文:  http://www.cnblogs.com/quanenmin/p/4335278.html

时间: 2024-08-10 05:55:08

java map缓存的相关文章

分享一个java Map实现的cache manager,定时清除缓存起来的值

原文:分享一个java Map实现的cache manager,定时清除缓存起来的值 源代码下载地址:http://www.zuidaima.com/share/1550463676140544.htm 用来存储短暂对象的缓存类,实现Map接口,内部有一个定时器用来清除过期(30秒)的对象. 为避免创建过多线程,没有特殊要求请使用getDefault()方法来获取本类的实例. package com.zuidaima.modules.common.util; import java.util.A

简单的Map缓存机制实现

简单的Map缓存机制实现 大致思路是用一个单例的Map实现,当然此Map得是线程安全的--ConcurrentHashMap 原本项目需求是缓存十条消息,所以打算用Map实现缓存机制.中途夭折下面具体尚未实现... 当然此代码仞为半成品,具体得根据项目需求采用不同的原则清除缓存 package per.zww.util; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class CacheP

java Map实现的cache manager

一个模仿memcached的JAVA虚拟缓存工具,可以缓存java对象 1 import java.io.ByteArrayInputStream; 2 import java.io.ByteArrayOutputStream; 3 import java.io.ObjectInputStream; 4 import java.io.ObjectOutputStream; 5 import java.util.concurrent.ConcurrentHashMap; 6 import java

java 开源缓存框架--转载

原文地址:http://www.open-open.com/13.htm JBossCache/TreeCache JBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能.缓存数据被自动复制,让你轻松进行Jboss服务器之间的集群工作.JBossCache能够通过Jboss应用服务或其他J2EE容器来运行一个Mbean服务,当然,它也能独立运行. JBossCache包括两个模块:TreeCache和TreeCacheAOP. TreeCache --是一个树形

Java实现缓存(LRU,FIFO)

吹吹牛逼,晒晒太阳.不如来写点东西,哈哈哈哈哈....今天来说说,如何用java实现缓存,这个话题很多面试的也会被问到.今天就来说说. 1.为什么要java实现缓存的? 由于目前软件或网页的并发量增加很大,大量请求直接操作数据库,会对数据造成很大的压力.处理大量请求和连接时间会很长.而我们知道数据库中70%的数据是不需要修改的,那就可以引入缓存来进行读取,减少数据库的压力. 常用的缓存有Redis和memcached,但是有时候一些小场景就可以直接使用Java实现缓存,就可以满足这部分服务的需求

5个强大的Java分布式缓存框架推荐

在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5个常用的Java分布式缓存框架,这些缓存框架支持多台服务器的缓存读写功能,可以让你的缓存系统更容易扩展. 1.Ehcache – Java分布式缓存框架 Ehcache是一个Java实现的开源分布式缓存框架,EhCache 可以有效地减轻数据库的负载,可以让数据保存在不同服务器的内存中,在需要数据的

java Map排序(升序、降序、随机排序)

基础知识: 1 HashMap会使用key,根据hashcode进行默认排序. 2  LinkedHashMap根据存入先后进行排序 代码展示: 1 随机排序 java Map排序(升序.降序.随机排序),布布扣,bubuko.com

Java Map遍历方式的选择

1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率.那么实际情况如何呢? 为了解遍历性能的真实差距,包括在遍历key+value.遍历key.遍历value等不同场景下的差异,我试着进行了一些对比测试. 2. 对比测试 一开始只进行了简单的测试,但结果却表明k

Java分布式缓存框架

http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5个常用的Java分布式缓存框架,这些缓存框架支持多台服务器的缓存读写功能,可以让你的缓存系统更容易扩展. 1.Ehcache – Java分布式缓存框架 Ehcache是一个Java实现的开源分布式缓存