在黑马商城中用到了ehcache缓存框架减少对数据库的交互次数 Ehcache有什么优点呢? 1.快速(在jvm虚拟机中缓存) 2.简单(API简单) 3.多种缓存策略 4.缓存数据有两级:内存和磁盘,因此无需担心容量问题 5.缓存数据会在虚拟机重启的过程中写入磁盘 6.可以通过RMI、可插入API等方式进行分布式缓存 7.具有缓存和缓存管理器的侦听接口 8.支持多缓存管理器实例,以及一个实例的多个缓存区域 9.提供Hibernate的缓存实现(hibernate的二级缓存) 总结 : 可以单独使用,一般在第三方库中被用到的比较多(如mybatis、shiro等)ehcache 对分布式支持不够好,多个节点不能同步,通常和redis一块使用 ehcache也有集群的功能,但是我觉得ehcache还是适合一些简单的应用缓存,比如方法级别的,缓存方法的返回值。或者当作一个Map来存储不由GC管理的、可以持久化的数据,比如爬虫url的存储。 说到缓存肯定要和redis做比较 ehcache与redis的区别: 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();
|