5天商城项目中关于Ehcache的使用以及总结

类似上面这种分类栏目,需要经常展示但是有不经常修改的,我们应该做缓存处理。如果每展示一次就查询一次数据库,增加了与数据库的查询次数,感觉这是相当不推荐的。因为是刚接触javaweb,没有学习框架之前,我使用了EHcachel。

首先,我们需要在src下配置xml文件,名字就叫做ehcache.xml。ehcache.xml中的一些配置文件如下

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    <!-- 指定一个文件目录,当EHCache(数据溢出)时候把数据写到硬盘上时,将把数据写到这个文件目录下 -->
    <diskStore path="C:/ehcache"/>

	<cache
	    name="BlogCache"
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
            maxElementsOnDisk="10000000"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
            />
</ehcache>
其中,着重注意缓存溢出存放的位置,即
diskStore path

并且name是唯一的,读取文件是需要使用到,

maxElementsInMemory是最大缓存元素数量,当超过这个数量时就会缓存在硬盘上。

当然你必须确保

diskPersistent是开启状态的。

好了,这些就是值得注意的配置文件。接下来我们开始导包,并且创建代码。

//创建缓存管理器
		CacheManager cacheManager = CacheManager.create(CatrgoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));
		//获得对应的缓存区
		Cache cache = cacheManager.getCache("BlogCache");
		Element element = cache.get("list");
		if(element==null){
			//如果为空,查询数据库
			System.out.println("查询了数据库");
			CatrgoryDao catrgoryDao = (CatrgoryDao) BeanFactory.getBean("CatrgoryDao");
			List<Catrgory>list= catrgoryDao.findAll();
			element= new Element("list", list);
			cache.put(element);
			return list;	
		}
		else{
			//如果不为空
			System.out.println("没有查询数据库");
			List<Catrgory>list=(List<Catrgory>) element.getObjectValue();
			return list;
		}
		

在其中需要注意的是,EHcache的name不要写错,否则会报空指针异常。首先,创建管理器,然后根据对应的name获取相应的缓存区域,值得一提的是,其中利用到了类加载器读取src下面的xml文件.然后检查缓存区内是否含有对应字段的缓存,用的是cache的get方法,返回element对象.如果没有的话,查询数据库,并重新实例化element并调用put方法存入返回的值。如果缓存不为空的话,我们直接利用element的getObjectValue()方法直接查询我们想要的值。为了验证结果,我们可以在对应的判断中加入打印输出语句,验证我们的操作。

这就是在做项目中使用了EHcache并且使用心得。事实上,我们在使用缓存有利有弊,好处是与数据库的交互变少了,坏处就是如果以后要进行增删改查的操作时,我们要进行缓存同步处理,即调用remove方法。当然总体上看的话,还是好处比较多的。

好了如果想要了解关于缓存关于EHcache,建议你阅读ehcache简介及配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值