微服务实战系列之EhCache

前言

书接前文,继续深耕。上一篇博主对Redis进行了入门级介绍,大体知道了Redis可以干什么以及怎么使用它。

今日博主继续带着大家学习如何使用EhCache,这是一款基于Java的缓存框架。

在这里插入图片描述


  • 微服务实战系列之Redis(cache)
  • 微服务实战系列之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.hqwc.cn/news/233749.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读——SEEM

arxiv: 分割模型向比较灵活的分割的趋势的转变&#xff1a;封闭到开放&#xff0c;通用到特定、one-shot到交互式。From closed-set to open-vocabulary segmentation&#xff0c;From generic to referring segmentation&#xff0c;From one-shot to interactive segmentati…

Windows核心编程 HOOK

目录 HOOK概述 HOOK API SetWindowsHookExA 函数(winuser.h) UnhookWindowsHookEx 函数(winuser.h) NextHookEx 函数(winuser.h) 局部钩子 全局钩子 为什么全局钩子需要用dll作为过程函数&#xff1f; HOOK概述 本质&#xff1a;Windows消系统的消息过滤器。 全局钩子…

【BSP开发经验】uboot gpl框架开发经验

文章目录 uboot_gpl 隔离 的目的uboot_gpl 隔离基本原理uboot_gpl 基本框架uboot_gpl 适配新平台的方式uboot 添加hikcmd功能适配调试步骤 链接脚本语法链接脚本的格式链接脚本的简单示例设置入口点&#xff08;entry&#xff09;设置输出文件名处理目标文件格式的命令uboot_gp…

数据库应用:MongoDB 文档与索引管理

目录 一、理论 1.MongoDB文档管理 2.MongoDB索引管理 二、实验 1.MongoDB文档管理 2.MongoDB索引管理&#xff08;索引添加与删除&#xff09; 3.MongoDB索引管理&#xff08;全文索引&#xff09; 4.MongoDB索引管理&#xff08;多列索引&#xff09; 5.MongoDB索引管…

教育企业CRM选择技巧

教育行业的发展一波三折&#xff0c;要想在激烈的赛道脱颖而出&#xff0c;就需要有一套有效的CRM系统&#xff0c;来帮助教育机构提升招生效率、增加学员留存、提高教学质量。下面说说&#xff0c;教育企业选择CRM系统要具备的四大功能。 1、招生管理功能 教育机构的首要目标…

珠宝模具3d仿真沉浸式交互展示更易分享传播

3D云展会经过近几年的蓬勃发展&#xff0c;迅速受到参展企业和客户的多方认可和支持&#xff0c;那么随着市场再度恢复&#xff0c;各种展会络绎不绝&#xff0c;想要快速打造一个逼真的线上3D云展会成为企业刚需。3D云展会线上搭建平台是web3d开发公司深圳华锐视点根据领先的三…

蓝桥杯每日一题2023.11.29

题目描述 #include <stdio.h> #include <string.h>void StringInGrid(int width, int height, const char* s) {int i,k;char buf[1000];strcpy(buf, s);if(strlen(s)>width-2) buf[width-2]0;printf("");for(i0;i<width-2;i) printf("-"…

socket.io介绍

1. 使用的技术 Socket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架&#xff0c;包含 client 的 JavaScript 和 server 的 Node。其屏蔽了所有底层细节&#xff0c;让顶层调用非常简单。 另外&#xff0c;Socket.IO 还有一个非常重要的好处。其不仅支持 WebSocket…

STM32 外部中断配置与中断函数设计

单片机学习 目录 文章目录 一、外部中断配置步骤 1.1配置RCC 1.2配置GPIO 1.3配置AFIO 1.4配置EXTI 1.5配置NVIC 二、中断函数设计 总结 一、外部中断配置步骤 第一步&#xff1a;配置RCC&#xff0c;把涉及外设的时钟打开。第二步&#xff1a;配置GPIO&#xff0c;选择…

Linux | Ubuntu设置 netstat(网络状态)

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序&#xff0c;它能提供TCP连接&#xff0c;TCP和UDP监听&#xff0c;进程内存管理的相关报告。 1.netstat的安装 搜…

选择合适的企业邮箱供应商的策略与技巧

如果您的公司是一个业务遍布全球的组织&#xff0c;选择合适的企业邮箱供应商将是一个重要的决策。 以下是在选择全球适用的企业邮箱供应商时应考虑的关键因素&#xff1a; 全球覆盖和数据中心位置&#xff1a;确保企业邮箱供应商在您业务遍及的国家和地区均具备良好的服务覆盖…

原来字节跳动这么容易就能进····

“字节是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在字节做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有12.5K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节…