当前位置:网站首页>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压缩提高响应速度。
边栏推荐
猜你喜欢

【c】小游戏---扫雷雏形

Unit 10 Continuous Tuning

8581 Linear linked list inversion

Briefly write about the use and experience of PPOCRLabel

Unit 11 Serializers

C语言sizeof和strlen的区别

宝塔搭建PESCMS-Ticket开源客服工单系统源码实测

使用云GPU+pycharm训练模型实现后台跑程序、自动保存训练结果、服务器自动关机
![[ROS] The software package of the industrial computer does not compile](/img/a8/a1347568170821e8f186091b93e52a.png)
[ROS] The software package of the industrial computer does not compile

华为防火墙
随机推荐
C语言日记 1“Hello world“
【c】大学生在校学习c语言常见代码
安装使用——百家CMS微商城说明文档(2)
Implementation of redis distributed lock and watchdog
C语言初级—判断一个数是不是素数(函数封装)
存储系统Cache(知识点+例题)
8580 Merge linked list
华为防火墙IPS
drf routing component Routers
[ROS] (01) Create ROS workspace
The specific operation process of cloud GPU (Hengyuan cloud) training
uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
【c】小游戏---五子棋之井字棋雏形
Linux: CentOS 7 install MySQL5.7
Using the cloud GPU + pycharm training model to realize automatic background run programs, save training results, the server automatically power off
Camera Hal(Hal3)层修改Preview流
C语言一维数组练习——将m个元素移动到数组尾部
yolov5 improvement (1) Add attention focus mechanism
PHP版本切换:5.x到7.3