黑马程序员技术交流社区
标题: 【南京校区】黑马商城中的ehcache缓存框架 [打印本页]
作者: 大蓝鲸小蟀锅 时间: 2018-6-22 13:14
标题: 【南京校区】黑马商城中的ehcache缓存框架
在黑马商城中用到了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();
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |