一 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包私服中肯定没有,需要...
Spring Boot JPA 二级缓存(ehcache) Spring Boot Hikari 连接池详解 Spring Boot Caffeine 本地缓存 Spring Boot Redis 缓存 Spring Boot Redis 分布式锁 Spring Boot Event 事件发布与监听 Spring Boot 集成 ...
springMVC做的小项目,springMVC+spring+hibernate+ehcache+shiro jar包全,代码也全,结构清晰明了,非常适合springMVC初学者、ehcache初学者、shiro初学者。shiro除了做认证以及授权外,还做了并发登录控制,多个...