一 Ehcache 简介
Ehcache是一个纯Java的进程内缓存框架。
对于缓存数据:
1.最原始的就是通过static静态变量将数据直接缓存在内容中
2.将部分数据缓存在内容中,部分缓存在磁盘上。因为可能内存容量不够。
Ehcache就可以将数据保存在内存和磁盘上。当然Ehcache保存数据的时候还可以配置各种策略。
但是Ehcache最实际的作用就是缓存数据在内存及磁盘上。
二 Ehcache 简单Demo
CacheControllor.java
package com; import java.io.InputStream; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; public class CacheControllor { private static InputStream is=Main.class.getClassLoader().getResourceAsStream("com/ehcache.xml"); private static CacheManager manager=new CacheManager(is); public static Cache addCache(String cacheName) { manager.addCache(cacheName); return manager.getCache(cacheName); } public static Cache getCache(String cacheName){ return manager.getCache(cacheName); } public static void removeCache(String cacheName){ manager.removeCache(cacheName); } }
DefaultCacheManagerEventListener.java
package com; import net.sf.ehcache.CacheException; import net.sf.ehcache.Status; import net.sf.ehcache.event.CacheManagerEventListener; public class DefaultCacheManagerEventListener implements CacheManagerEventListener{ @Override public void dispose() throws CacheException { System.out.println("==================== dispose ===================="); } @Override public Status getStatus() { return Status.STATUS_ALIVE; } @Override public void init() throws CacheException { System.out.println("==================== init CacheManagerEventListenerfactory ===================="); } @Override public void notifyCacheAdded(String str) { System.out.println("==================== notify cache added "+str+" ==================== "); } @Override public void notifyCacheRemoved(String str) { System.out.println("==================== notify cache removed "+str+" ==================== "); } }
DefaultCacheManagerEventListenerFactory.java
package com; import java.util.Properties; import net.sf.ehcache.CacheManager; import net.sf.ehcache.event.CacheManagerEventListener; import net.sf.ehcache.event.CacheManagerEventListenerFactory; public class DefaultCacheManagerEventListenerFactory extends CacheManagerEventListenerFactory { @Override public CacheManagerEventListener createCacheManagerEventListener( CacheManager cacheManager, Properties props) { System.out.println("properties:" + props); return new DefaultCacheManagerEventListener(); } }
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true"> <!-- 设置磁盘存储目录 --> <diskStore path="C:\temp\ehcache"/> <!-- 设置CacheManagerEventListener,当cache被创建或者删除时,会调用listener的相关方法。 --> <cacheManagerEventListenerFactory class="com.DefaultCacheManagerEventListenerFactory" properties="1=1,2=2,3=3,4=4"/> <!-- 集群发现其他CacheManager --> <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446, timeToLive=1" propertySeparator="," /> <!-- 监听集群中消息 --> <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/> <!-- maxEntriesLocalHeap:设置堆内存中的最大存储对象。如果设置为0,则没有限制。 eternal: 是指保存元素是否是永久的,如果是,则超时设置会被忽略,元素永远不过期。 timeToIdleSeconds: 设置元素距上一次被访问最长的空闲时间。只有当eternal设置为false是才有效。如果设置0,表示永远不过期。默认值为0. timeToLiveSeconds: 设置元素的最长生存时间。只有当eternal设置为false是才有效。 如果设置0,表示永远不过期。默认值为0. diskSpoolBufferSizeMB: 设置磁盘缓冲区大小。默认值为30M。每一个磁盘缓冲区针对与各自的cache。 maxEntriesLocalDisk: 设置堆内存中的最大存储对象。默认值为0.表示没有限制。 diskExpiryThreadIntervalSeconds: 磁盘失效线程运行间隔。默认值为120秒。 memoryStoreEvictionPolicy: 内存收获策略。默认为LRU. 其他可选为FIFO,LFU sub tab persistence strategy:可选值 localRestartable:将所有缓存对象拷贝到磁盘。重新启动后数据可以重新装载。只适用于企业版本。 localTempSwap:将所有缓存对象拷贝到磁盘。重新启动后数据将丢失。 none:不做持久化保存。默认模式。 distributed:依照<terracotta>持久层配置。 --> <defaultCache maxEntriesLocalHeap="1" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskSpoolBufferSizeMB="30" maxEntriesLocalDisk="10000000" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> <persistence strategy="localTempSwap" /> </defaultCache> </ehcache>
测试类Main.java
package com; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; public class Main { public static void main(String[] args) throws InterruptedException { Cache cache = CacheControllor.addCache("test"); // 如果cache中存储的element对象数超过maxEntriesLocalHeap指定的对象数, // 则如果配置类persistence策略不为none,则在指定的目录下会生成.data临时文件 for(int i=0;i<100;i++){ cache.put(new Element("key_"+i,"value_"+i)); } System.out.println(cache.getSize()); CacheControllor.removeCache("test"); } }
相关推荐
NULL 博文链接:https://sharemu.iteye.com/blog/1025377
java Ehcache新手快速入门
一看就懂的ehcache缓存技术使用技巧
Ehcache分布式缓存入门案例demo,简单易用上手快,帮助您快速解决应用中的单体缓存问题,提高系统响应速度。
spring整合ehcache的入门级别demo分享,通过junit来测试
Ehcache中文指南和实例教程 好东西来的, 入门必备
axis webservic ehcache 的入门示例
NULL 博文链接:https://qiuqiu0034.iteye.com/blog/1162952
包含Redis,memcache,encache的NoSQL入门
ehcache的学习的例子 适合初学者看看 入门级的
一本不可多得的好书。 官方网站上的指引文档,入门必备。
Ehcache 3.x产品线目前是开发产品线。 生成状态: 有关更多信息,您可能需要查看 。 新API入门 有关示例,文档和使用信息,请访问 。 当前的版本 我们于2020年8月25日发布了3.9.0。 包含指向工件和文档的链接,以...
主要介绍了Java Ehcache缓存框架入门级使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
主要介绍了JavaWeb开发之Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架的相关资料,需要的朋友可以参考下
这是一个shiro的入门Demo.. 使用了Spring MVC,mybaits等技术.. 数据库设计 : User : name--password Role : id--userid--roleName Function : id--userid--url tinys普通用户只能访问index.jsp admin用户通过添加...
常用功能:会话(session),安全性(rbac权限框架),shiro(rbac权限框架),oauth(第三方登录),logback(日志),log-aop(AOP方式日志),ehcache(ehcache缓存),异常(统一异常处理),Async(异步
基于SpringMVC+Shiro+Activiti 5.16 的简单OA,...Shiro实现登录认证和权限控制,结合Ehcache缓存权限列表,毕竟权限表并不是总在变化。 用户在线列表,可以强制踢出。Shiro的密码的加密解密,并发登陆、会话管理等功能
此项目为springmvc、Mybatis、EHcache、maven、Spring security3、activiti5工作流的整合 是一个基于数据库的权限管理demo项目、使用mysql数据库 项目运行前需要构建maven私服 而且有些jar包私服中肯定没有,需要...
springMVC做的小项目,springMVC+spring+hibernate+ehcache+shiro jar包全,代码也全,结构清晰明了,非常适合springMVC初学者、ehcache初学者、shiro初学者。shiro除了做认证以及授权外,还做了并发登录控制,多个...
EHCache 的特点,系统要求及安装 是一个纯Java ,过程中(也可以理解成插入式)缓存实现