您当前的位置: 首页 >  缓存

Ehcache缓存设计原理

发布时间:2021-02-03 21:05:15 ,浏览量:0

纯Java开源缓存框架,配置简单、结构清晰、功能强大,是一个非常轻量级的缓存实现,Hibernate里面就集成了相关缓存功能。

  • Ehcache架构图
核心概念
  • cache manager 缓存管理器,以前只允许单例,现在可多实例

  • cache 缓存管理器内可放置若干cache,存放数据的实质,所有cache都实现了Ehcache接口,这是一个真正使用的缓存实例。 通过缓存管理器的模式,可在单个应用中轻松隔离多个缓存实例,独立服务于不同业务场景需求,缓存数据物理隔离,同时需要时又可共享。

  • element 单条缓存数据的组成单位。

  • system of record(SOR) 可以取到真实数据的组件,可以是真正的业务逻辑、外部接口调用、存放真实数据的数据库等,缓存就是从SOR中读取或者写入到SOR中去的。

整个Ehcache提供了对JSR、JMX等标准支持,能够较好的兼容和移植,同时对各类对象有较完善的监控管理机制。 它的缓存介质涵盖堆内存(heap)、堆外内存(BigMemory商用版本支持)和磁盘,各介质可独立设置属性和策略。 Ehcache最初是独立的本地缓存框架组件,在后期的发展中,结合Terracotta服务阵列模型,可以支持分布式缓存集群,主要有RMI、JGroups、JMS和Cache Server等传播方式进行节点间通信,如架构图左侧部分。

数据流转
  • Flush 缓存条目向低层次移动。
  • Fault:从低层拷贝一个对象到高层。在获取缓存的过程中,某一层发现自己的该缓存条目已经失效,就触发了Fault行为。
  • Eviction:把缓存条目除去。
  • Expiration:失效状态。
  • Pinning:强制缓存条目保持在某一层。

下图反映数据在各个层之间的流转及各层数据的生命周期 L1:本地内存层 L2:Terracotta服务节点层

配置
<ehcache>  <diskStore path="java.io.tmpdir"/>  <defaultCache maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"/>  <cache name="CACHE1" maxElementsInMemory="1000" eternal="true" overflowToDisk="true"/> <cache name="CACHE2" maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="200" timeToLiveSeconds="4000" overflowToDisk="true"/>             
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0607s