您的位置:首页 > 其它

利用缓存机制来实现对页面的优化

2016-09-19 00:50 323 查看
      我们在实现页面加载数据的时候,如果每次都需要从数据库中查询完数据之后再将数据回写,那么这样的开发效率是很低的,固然有时候我们可以将数据存储在域对象中,但是这也不是都可以解决问题的,这时我们利用缓存机制来非常轻松的解决这类问题。           

       常用的缓存机制

       * EHCache:Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。

* Memcached:Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

       * Redis:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted
set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。

这里我们详细的介绍一下EHCache的用法。

       在网上商城的“分类管理”中,我们通过利用EHCache缓存机制来实现对加载速度的优化。

EHCache缓存机制的使用步骤

       一、引入相关EHCache的jar包。

       二、在业务层建立相关数据的缓存机制

       1、读取配置文件,获得EHCache缓存区中的核心对象CacheManager对象,

代码如下:<span style="font-size:18px;">CacheManager cacheManager = CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));</span>
代码解析:creat方法中需要传入一个输入流路径,但是由于是web路径,所以我们可以通过类加载器的getResourceAsStream的方法来获得配置文件的绝对路径。

       2、从配置文件中获取相应名称的缓存区。

<span style="font-size:18px;">Cache cache = cacheManager.getCache("categoryCache");</span>

三、判断缓存区中是否含有相应的数据(这里以网上商城中分类数据为例)

       代码如下:

<span style="font-size:18px;">// 判断缓存中是否有list集合:
Element element = cache.get("list");
List<Category> list = null;
if(element == null){
// 缓存中没有数据
System.out.println("缓存中没有数据 ,查询数据库=====");

CategoryDao categoryDao = new CategoryDaoImpl();
list = categoryDao.findAll();
element = new Element("list",list);
cache.put(element);
}else{
// 缓存中已经存在数据
System.out.println("缓存中有数据 ,没有查询数据库=====");
list = (List<Category>)element.getObjectValue();

}
</span>

代码解析:缓存区中的元素对象Element对象是以键值对的形式存在的。

                cache.get("list");是获得储存在缓冲区中的元素对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  缓存机制 优化