46设计网站官网,学技巧网站制作,外贸整合营销推广,邯郸网络教研中心前言
书接前文#xff0c;继续深耕。上一篇博主对Redis进行了入门级介绍#xff0c;大体知道了Redis可以干什么以及怎么使用它。
今日博主继续带着大家学习如何使用EhCache#xff0c;这是一款基于Java的缓存框架。 微服务实战系列之Redis微服务实战系列之Cache微服务实战…前言
书接前文继续深耕。上一篇博主对Redis进行了入门级介绍大体知道了Redis可以干什么以及怎么使用它。
今日博主继续带着大家学习如何使用EhCache这是一款基于Java的缓存框架。 微服务实战系列之Redis微服务实战系列之Cache微服务实战系列之Nginx技巧篇微服务实战系列之Nginx微服务实战系列之Feign微服务实战系列之Sentinel微服务实战系列之Token微服务实战系列之Nacos微服务实战系列之Gateway微服务实战系列之加密RSA微服务实战系列之签名Sign 一、Ehcache简介 Ehcache is an open-source, standards-based cache for boosting performance, offloading your database, and simplifying scalability, it is today’s most widely used Java-based cache. Ehcache provides in-process cache, which you can replicate across multiple nodes. 博主提炼几个关键词开源、标准化、轻量级、Java缓存、分布式。
1. 快速入门
Ehcache支持API、XML的的集成方式博主以XML为例进行介绍。
1.1 导入依赖
!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache --
dependencygroupIdnet.sf.ehcache/groupIdartifactIdehcache/artifactIdversion2.10.9.2/version
/dependency
因为只依赖 slf4j-api所以Ehcache真正的做到了轻量级。
1.2 配置参数
准备一个echache.xml文件参考配置
?xml version1.0 encodingUTF-8?
ehcache!-- 指定磁盘存储目录--diskStore pathd:/ehcache/mycache/ /!-- defaultCache:默认的缓存maxElementsInMemory:内存中最大缓存对象数eternal:是否永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性overflowToDisk:Element数量达到maxElementsInMemory时写到磁盘中--defaultCachemaxElementsInMemory100eternaltrueoverflowToDisktrue/!-- maxElementsInMemory:设置成1且overflowToDisk为true代表只要有一个Element就立即持久化到硬盘eternal:设置成true永久有效maxElementsOnDisk:硬盘中最大缓存对象数不限为0diskPersistent:是否缓存虚拟机重启期数据 --cache namefirstCachemaxElementsInMemory1 eternaltrueoverflowToDisktrue maxElementsOnDisk0diskPersistenttrue//ehcache2. 数据管理机制
Ehcache数据缓存依赖Manager完成遵循CacheManager—Cache—Element层级关系以下是每个组件的特点。
CacheManager 缓存管理器是Ehcache的入口。Cache 每个CacheManager可以管理多个Cache每个Cache可以管理多个Element。Element 单条缓存的组成单位。 3. 缓存策略
FIFO先进先出LRU最近最少使用LFU最不经常使用
二、单体OR集群
1. 单体
单体模式数据缓存在本地磁盘或内存中适用于对数据缓存要求较高的场景。因此需要准备足够的磁盘或内存空间。
2. 集群
集群模式Ehcache提供了多种部署方案比如基于RMI、JMS等组内广播策略实现分布式缓存部署。 鉴于Ehcache不保证数据安全即数据访问正确性所以其特点之一可能是“快而不准”如此可能会带来一个问题“缓存一致性”。因此通常需结合其他保障一致性的组件配合使用实现二级缓存如下图 结语
Ehcache作为近年来比较流行的Java缓存框架对于本地缓存的支持已足够。“小而快”的特点也让它成为微服务中的热门组件。当然也存在粗暴的一面也因此失去了分布式的部分优势。 所以各位盆友不同的缓存各领风骚选择需谨慎