当前位置:网站首页>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压缩提高响应速度。
边栏推荐
- [ROS](01)创建ROS工作空间
- ABP,kendo后台接口,新增,查询
- Visual Studio配置OpenCV之后,提示:#include<opencv2/opencv.hpp>无法打开源文件
- drf serializer - Serializer
- Flask-SQLAlchemy
- [ROS] The software package of the industrial computer does not compile
- [ROS] The difference between roscd and cd
- Error Correction Design Principle of Hamming Check Code
- C语言日记 6 基本输入/输出
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
猜你喜欢
随机推荐
uniCloud 未能获取当前用户信息:30205 | 当前用户为匿名身份
Web Design (Beginners) [easy to understand]
Unit 13 Mixing in View Base Classes
CTF-XSS
Creating seven NiuYun Flask project complete and let cloud
重新学习编程day1 【初始c语言】【c语言编写出计算两个数之和的代码】
Camera Hal(Hal3)层修改Preview流
【c】小游戏---扫雷雏形
STM32(F407)—— 堆栈
[ROS](02)创建&编译ROS软件包Package
鼠标右键菜单栏太长如何减少
HBuilderX 核心插件安装提示:“插件XXX下载失败,请检查网络”问题的解决办法
什么是闭包?闭包的作用?闭包的应用?有什么缺点?
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
Raj delivery notes - separation 第08 speak, speaking, reading and writing
C语言初级—用一角,两角,五角和一元组成3.5元有多少种组合方法
(ROS) (03) CMakeLists. TXT, rounding
Unit 10 Continuous Tuning
8580 Merge linked list
MobileNet ShuffleNet & yolov5 replace backbone