A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区


在黑马商城中用到了ehcache缓存框架减少对数据库的交互次数
Ehcache有什么优点呢?
1.快速(jvm虚拟机中缓存)
2.简单(API简单)
3.多种缓存策略
4.缓存数据有两级:内存和磁盘,因此无需担心容量问题
5.缓存数据会在虚拟机重启的过程中写入磁盘
6.可以通过RMI、可插入API等方式进行分布式缓存
7.具有缓存和缓存管理器的侦听接口
8.支持多缓存管理器实例,以及一个实例的多个缓存区域
9.提供Hibernate的缓存实现(hibernate的二级缓存)
总结 : 可以单独使用,一般在第三方库中被用到的比较多(如mybatisshiro等)ehcache 对分布式支持不够好,多个节点不能同步,通常和redis一块使用
ehcache也有集群的功能,但是我觉得ehcache还是适合一些简单的应用缓存,比如方法级别的,缓存方法的返回值。或者当作一个Map来存储不由GC管理的、可以持久化的数据,比如爬虫url的存储。
说到缓存肯定要和redis做比较
ehcacheredis的区别:
1.    redis的数据结构比较丰富,有key-value、hash、set等;
2.    ehcache比较简单,只有key-value
3.    ehcache直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。
4.    redis是通过socket访问到缓存服务,效率ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。
5.    如果是单个应用或者对缓存访问要求很高的应用,用ehcache。如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。
在黑马商城中用到的原生ehcache的使用流程:
1. ehcache.xml 配置一个 cache
<cache name="HelloWorldCache"
        maxElementsInMemory="1000"
        eternal="false"
        timeToIdleSeconds="5"
        timeToLiveSeconds="5"
        overflowToDisk="false"
        memoryStoreEvictionPolicy="LRU"/>
2. 创建缓存管理器  
              CacheManagercacheManager = CacheManager.create("/ehcache.xml");
3.获取缓存对象  
               Cache cache =cacheManager.getCache("HelloWorldCache");
4.创建元素
      Element element = new Element("key1", "value1");
5.将元素添加到缓存
       cache.put(element);
6.获取缓存
       Element value = cache.get("key1");
7.删除元素
       cache.remove("key1");
8.关闭缓存管理器  
              cacheManager.shutdown();


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马