当前位置:网站首页>Ehcache基础学习
Ehcache基础学习
2022-08-02 14:04:00 【王永俊】
Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。
大纲图
核心定义
cache manager:缓存管理器,以前是只允许单例的,不过现在也可以多实例了。
cache:缓存管理器内可以放置若干cache,存放数据的实质,所有cache都实现了Ehcache接口。
element:单条缓存数据的组成单位
system of record(SOR):可以取到真实数据的组件,可以是真正的业务逻辑、外部接口调用、存放真实数据的数据库等等,缓存就是从SOR中读取或者写入到SOR中去的。
EHCache API的基本用法
首先介绍CacheManager类。它主要负责读取配置文件,默认读取CLASSPATH下的ehcache.xml,根据配置文件创建并管理Cache对象。
// 使用默认配置文件创建CacheManager
CacheManager manager = CacheManager.create();
// 通过manager可以生成指定名称的Cache对象
Cache cache = cache = manager.getCache("demoCache");
// 使用manager移除指定名称的Cache对象
manager.removeCache("demoCache");
可以通过调用manager.removalAll()来移除所有的Cache。通过调用manager的shutdown()方法可以关闭CacheManager。
有了Cache对象之后就可以进行一些基本的Cache操作,例如:
//往cache中添加元素
Element element = new Element("key", "value");
cache.put(element);
//从cache中取回元素
Element element = cache.get("key");
element.getValue();
//从Cache中移除一个元素
cache.remove("key");
可以直接使用上面的API进行数据对象的缓存,这里需要注意的是对于缓存的对象都是必须可序列化的。
配置文件
配置文件ehcache.xml中命名为demoCache的缓存配置:
<cache name="demoCache" maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LFU" />
各配置参数的含义:
maxElementsInMemory:缓存中允许创建的最大对象数
eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是 0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。
如果应用需要配置多个不同命名并采用不同参数的Cache,可以相应修改配置文件,增加需要的Cache配置即可。
总结
EHCache是纯Java实现的简单、快速的Cache组件。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分 布式的Cache,可以作为Hibernate的缓存插件。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用 Gzip压缩提高响应速度。
边栏推荐
猜你喜欢
随机推荐
VS Code远程开发及免密配置
St. Regis Takeaway Notes - Lecture 10 Swagger
数据的表示方法和转换(二进制、八进制、十进制、十六进制)
YOLOv7 uses cloud GPU to train its own dataset
【c】小游戏---五子棋之井字棋雏形
Flask framework
C语言日记 3 常量
Unit 14 Viewsets and Routing
Building and getting started with the Flask framework
Unit 8 Middleware
C语言初级—从键盘接收一个整形并逆序输出
【c】小游戏---扫雷雏形
线性代数期末复习存档
Basic operations of 8583 sequential stack
华为防火墙
Network pruning (1)
[ROS] (05) ROS Communication - Node, Nodes & Master
uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
基于ThinkPHP6.0 - 宝塔搭建漫画CMS管理系统源码实测
Deep learning framework pytorch rapid development and actual combat chapter3