当前位置: 首页 > news >正文

微服务实战系列之EhCache

前言

书接前文,继续深耕。上一篇博主对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 -->
<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>2.10.9.2</version>
</dependency>

因为只依赖 slf4j-api,所以Ehcache真正的做到了轻量级。

1.2 配置参数

准备一个echache.xml文件,参考配置:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache><!--  指定磁盘存储目录--><diskStore path="d:/ehcache/mycache/" /><!-- defaultCache:默认的缓存maxElementsInMemory:内存中最大缓存对象数eternal:是否永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性overflowToDisk:Element数量达到maxElementsInMemory时,写到磁盘中--><defaultCachemaxElementsInMemory="100"eternal="true"overflowToDisk="true"/><!-- maxElementsInMemory:设置成1且overflowToDisk为true,代表只要有一个Element,就立即持久化到硬盘eternal:设置成true,永久有效maxElementsOnDisk:硬盘中最大缓存对象数,不限为0diskPersistent:是否缓存虚拟机重启期数据 --><cache name="firstCache"maxElementsInMemory="1" eternal="true"overflowToDisk="true" maxElementsOnDisk="0"diskPersistent="true"/></ehcache>
2. 数据管理机制

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缓存框架,对于本地缓存的支持已足够。“小而快”的特点,也让它成为微服务中的热门组件。当然也存在粗暴的一面,也因此失去了分布式的部分优势。
所以各位盆友,不同的缓存各领风骚,选择需谨慎!
在这里插入图片描述

http://www.lryc.cn/news/252341.html

相关文章:

  • SpringBoot:SpringMVC(上)
  • 一文搞懂Go语言中包导入
  • Vue2学习笔记(事件处理)
  • 【2023第十二届“认证杯”数学中国数学建模国际赛】A题 太阳黑子预报完整解题思路
  • Huawei FusionSphere FusionCompte FusionManager
  • GSLB是什么?谈谈对该技术的一点理解
  • 【接口测试】POST请求提交数据的三种方式及Postman实现
  • SpringBoot系列之集成Jedis教程
  • centos用什么命令可查看版本号
  • 大数据之Redis
  • 【React设计】React企业级设计模式
  • 赴日程序员高年薪过上“躺平”生活?
  • Windows开启SQL Server服及1433端口
  • 网盘系统设计:万亿 GB 网盘如何实现秒传与限速?
  • 整数和浮点数在内存中的存储
  • rabbitMQ镜像队列的使用
  • ros来保存图像和保存记录视频的方法---gmsl相机保存视频和图片
  • Oracle19c使用adrci清理日志文件
  • Ubuntu之Sim2Real环境配置(坑居多)
  • java中BigDecimal里面的subtract函数的意思?
  • 线程变量引发的session混乱问题
  • dockerfile与docker-compose解释及对比
  • 数据库更换版本
  • Unity Meta Quest 一体机开发(九):【手势追踪】通过录制抓取手势实现自定义抓取姿势
  • Git 简介及异常场景处理
  • 龙迅LT2611UX 四端口LVDS转HDMI(2.0)
  • MySQL基础『数据类型』
  • SQL手工注入漏洞测试(PostgreSQL数据库)-墨者
  • STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础
  • 【超详细教程】基于html+js实现轮播图