问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java jdis 可以缓存map 吗

发布网友 发布时间:2022-05-06 10:50

我来回答

1个回答

热心网友 时间:2022-06-29 19:48

缓存是Java中主要的内容,主要目的是缓解项目访问数据库的压力以及提升访问数据的效率,以下是通过Map实现java缓存的功能,并没有用cache相关框架。
一、缓存管理类 CacheMgr.java

[java] view plain copy
package cache.com;

import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 缓存管理类
* @author Administrator
*
*/
public class CacheMgr {

private static Map cacheMap = new HashMap();
private static Map cacheConfMap = new HashMap();

private static CacheMgr cm = null;

//构造方法
private CacheMgr(){
}

public static CacheMgr getInstance(){
if(cm==null){
cm = new CacheMgr();
Thread t = new ClearCache();
t.start();
}
return cm;
}

/**
* 增加缓存
* @param key
* @param value
* @param ccm 缓存对象
* @return
*/
public boolean addCache(Object key,Object value,CacheConfModel ccm){
System.out.println("开始增加缓存-------------");
boolean flag = false;
try {
cacheMap.put(key, value);
cacheConfMap.put(key, ccm);
System.out.println("增加缓存结束-------------");
System.out.println("now addcache=="+cacheMap.size());
flag=true;
} catch (Exception e) {
e.printStackTrace();
}

return flag;
}

/**
* 获取缓存实体
*/
public Object getValue(String key){
Object ob=cacheMap.get(key);
if(ob!=null){
return ob;
}else{
return null;
}
}

/**
* 获取缓存数据的数量
* @return
*/
public int getSize(){
return cacheMap.size();
}

/**
* 删除缓存
* @param key
* @return
*/
public boolean removeCache(Object key){
boolean flag=false;
try {
cacheMap.remove(key);
cacheConfMap.remove(key);
flag=true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}

/**
* 清除缓存的类
* 继承Thread线程类
*/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMap.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key);
//比较是否需要清除
if(!ccm.isForever()){
if((new Date().getTime()-ccm.getBeginTime())>= ccm.getDurableTime()*60*1000){
//可以清除,先记录下来
tempSet.add(key);
}
}
}
//真正清除
Iterator tempIt = tempSet.iterator();
while(tempIt.hasNext()){
Object key = tempIt.next();
cacheMap.remove(key);
cacheConfMap.remove(key);

}
System.out.println("now thread================>"+cacheMap.size());
//休息
try {
Thread.sleep(60*1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

}

二、缓存属性类 CacheConfModel.java

[java] view plain copy
package cache.com;
/**
* 缓存属性类
* @author Administrator
*
*/
public class CacheConfModel implements java.io.Serializable{

private long beginTime;//缓存开始时间
private boolean isForever = false;//是否持久
private int rableTime;//持续时间

public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this.beginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
this.isForever = isForever;
}
public int getDurableTime() {
return rableTime;
}
public void setDurableTime(int rableTime) {
this.rableTime = rableTime;
}

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
windows8怎么本地连接 windows8如何设置网络 诸葛亮故里诸葛亮故里纪念馆 临沂诸葛亮文化旅游节历届介绍 第四届诸葛亮文化旅游节纪念诞辰 ...请根据该表回答下面问题: (1)表中A、B、C分 ...请你分析样品A、B、C中代表血浆、原尿和尿液的样品分别是... c糖蛋白化验 江诗丹顿金属手表(江诗丹顿的手表女款) 定位最好的手表? 表带上的圈叫什么 电脑椅子下面五星脚,是尼龙好还是钢好? 生存战争1.27.1.0种子代码大全 这个椅子腿断了,请问这个是什么材质,用什么方式修复最结实,断口用哪种胶粘合最好?或者有其他处理办法 家用椅子和餐桌,是做金属脚好呢,还是实木好? 办公椅的五星脚,用什么材质的好? 电脑椅是买尼龙脚的好吗 还是钢制脚 还是铝合金脚好 我家是木地板 公园椅有什么材质的,在哪比较常见 户外休闲椅的椅子腿都是什么材质做的?听说有什么铸铝啊、铸铁啊什么的!我都不知道是什么东西,求解! 华润雪花啤酒(山东)有限公司 济南办事处的联系电话、电子邮箱、现办公的详细地址 华润置地有限公司如何?主要从事什么业务? 移动花卡宝藏版定向流量是什么意思? 有团险还需要再购买保险吗? 保险销售管理中如何看待队伍建设问题 c语言输出字符串数组出现乱码 保险公司银保团险销售队伍建设 c语言中字符串“asdfgh”包含了几个字符,占几个字节,“\0”算了个字节还是算一个字符 企业投保团体意外险需要注意哪些问题 sizeof strlen 的一个问题 需要给工人买保险,想问下投保团体健康险需要注意哪些? C语言写的合并字符串 出现如下错误后面多了乱码求指教 wps表格粘贴后字体变了 平安旅游信用卡额度多少 微型计算机中的内存容量主要指( )的容量。 A RAM B ROM C CMOS D Cache? IXP425 是ARM7 还是ARM9 在wps中用word做的表格复制到EXCEL后,较长的数据变成科学计数法了,怎么都调不回原样。 如何取消绑定银行卡 苹果6s手机触摸屏部分失灵怎么办 上海公务员五险一金缴纳比例 五险一金比例 上海市 怎样写好工作总结 又快到年底了 新的一年要过去了,年底总结怎么写啊? 请问年底总结应该怎么写? 用一条网线如何实现共享? 求助.华硕电脑pe进不去 华硕K455l用U盘装系统进不去PE系统怎么办? 华硕电脑刚买的系统win10,我用u盘做了个pe为什么进不去 梦到女儿的腿被玻璃杯扎到了很深怎么回事儿 解梦,关于玉镯的 梦到自己买了两幅破碎的玉镯 梦见羊被盗,儿子进去后,脚趾被玻璃扎破。