分布式集群本地缓存

在 Java 分布式集群微服务项目中,虽然 Redis 等分布式缓存更常用,但在某些特定场景下,本地缓存依然有较好的应用价值。常用的本地缓存工具主要有以下几种:

1. Caffeine

  • 简介:Caffeine 是一个现代化的高性能 Java 本地缓存库,继承了 Guava 缓存的优点,性能更优。
  • 特性
    • 支持最大容量限制、基于时间的过期、基于访问频率的过期等多种淘汰策略。
    • 提供异步加载缓存、缓存刷新机制,适合高频数据的缓存需求。
  • 适用场景:用于高频访问的短期数据缓存(如配置项、本地会话等)。
  • 代码示例
Cache<String, Object> cache = Caffeine.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES).maximumSize(10_000).build();// 存取数据
cache.put("key", value);
Object value = cache.getIfPresent("key");

2. Guava Cache

  • 简介:Google 提供的缓存工具,具有较强的灵活性和功能性。
  • 特性
    • 支持缓存大小和过期策略、定时刷新等。
    • 和 Caffeine 相似,但性能稍逊色,因此 Guava Cache 在现代 Java 项目中使用有所减少。
  • 适用场景:简单缓存需求或对性能要求不太高的本地缓存需求。
  • 代码示例
Cache<String, Object> cache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10, TimeUnit.MINUTES).build();// 存取数据
cache.put("key", value);
Object value = cache.getIfPresent("key");

3. EHCache

  • 简介:EHCache 是一个成熟的缓存框架,支持分布式缓存功能,也可以单独作为本地缓存使用。
  • 特性
    • 支持缓存持久化、分布式缓存、过期策略、容量限制等功能。
    • 提供丰富的配置选项,可通过 XML 或编程方式配置。
  • 适用场景:适合需要缓存持久化、复杂配置的场景,也常用于单机应用。
  • 代码示例
CacheManager cacheManager = CacheManager.newInstance();
Cache cache = cacheManager.getCache("exampleCache");// 存取数据
cache.put(new Element("key", value));
Element element = cache.get("key");
Object value = element != null ? element.getObjectValue() : null;

4. Spring Boot 内置缓存(ConcurrentMapCache)

  • 简介:Spring Boot 提供的轻量级本地缓存实现,基于 ConcurrentHashMap 实现。
  • 特性
    • 适合小型项目或临时性缓存需求。
    • 配合 @Cacheable 注解,开发体验良好,但没有自动过期和清理机制。
  • 适用场景:适合小规模应用或单机场景,不适合复杂的缓存需求。
  • 代码示例
@Cacheable("exampleCache")
public String getData(String key) {return "data";
}

5. Map Struct(如 ConcurrentHashMap)

  • 简介:直接使用 Java 内置的 ConcurrentHashMap 作为本地缓存实现,简单高效。
  • 特性
    • 直接控制数据存取,开发简便,但没有缓存失效、淘汰策略等高级功能。
    • 适用场景:适合开发阶段的临时缓存,或者一些短期数据缓存场景。
  • 代码示例
Map<String, Object> cache = new ConcurrentHashMap<>();// 存取数据
cache.put("key", value);
Object value = cache.get("key");

总结

在 Java 分布式微服务环境中,CaffeineGuava Cache 是本地缓存的常用选择,Caffeine 因其高性能逐渐成为主流。而 EHCache 则适合对持久化和分布式支持要求较高的场景。如果使用 Spring 框架,简单的数据缓存可以考虑 Spring Boot 的内置缓存,开发成本较低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59114.shtml

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

相关文章

如何在Linux系统中使用SSH进行安全连接

如何在Linux系统中使用SSH进行安全连接 SSH简介 安装SSH 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动SSH服务 验证SSH是否安装成功 SSH配置 配置监听端口 配置登录方式 SSH客户端 安装SSH客户端 使用SSH客户端 SSH密钥认证 生成SSH密钥对 复制公钥到远程服务器…

Maven(26)如何使用Maven进行持续集成?

使用Maven进行持续集成&#xff08;Continuous Integration, CI&#xff09;通常涉及设置一个CI服务器&#xff0c;如Jenkins&#xff0c;并配置Maven项目以自动构建和测试。以下是一个详细的步骤指南&#xff0c;包括如何在Jenkins中设置Maven项目&#xff1a; 步骤 1: 安装和…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎&#xff0c;可用于全文搜索、分析和数据可视化。传统上&#xff0c;Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名&#xff0c;其中文档基于精确或部分关键字匹配进行匹配。然而&#xff0c;Elasticsearch 已经发展到支…

ElasticNet Regressor(弹性网络回归) --- 论文实战

一、前言 在《机器学习论文复现实战---linear regression》中通过Pearson 相关性分析,去除了2个高相关性特征 "PN" 和 "AN" ,数据维度变为890*25。(数据集地址) 这里我们不做如何前期处理,直接就将数据放入 ElasticNet 模型中进行训练了。 二、模型训…

OJ-5G网络建设

示例1 输入&#xff1a; 3 3 1 2 3 0 1 3 1 0 2 3 5 0 输出&#xff1a; 4示例2 输入&#xff1a; 3 1 1 2 5 0 输出&#xff1a; -1 示例3 输入&#xff1a; 3 3 1 2 3 0 1 3 1 0 2 3 5 1 输出&#xff1a; 1 分析&#xff1a;压缩路径 顺序&#xff1a;1 2&#xff1b;…

Kubeadm搭建k8s

一、架构 节点名称规格IP地址安装组件master012C/4G&#xff0c;cpu核心数要求大于2192.168.88.76docker、kubeadm、kubelet、kubectl、flannelnode012C/2G192.168.88.20docker、kubeadm、kubelet、kubectl、flannelnode022C/2G192.168.88.21docker、kubeadm、kubelet、kubect…

Ubuntu 安装 redis

一、使⽤apt安装 apt install redis -y 二、⽀持远程连接 修改 /etc/redis/redis.conf 修改 bind 127.0.0.1 为 bind 0.0.0.0修改 protected-mode yes 为 protected-mode no # By default, if no "bind" configuration directive is specified, Redis listens# fo…

Vue常用的修饰符有哪些?

修饰符&#xff08;Modifiers&#xff09;是用于指定以特殊方式绑定或处理Vue事件或指令的特殊符号。 事件修饰符 .stop: 阻止时间继续传播&#xff0c;相当于调用event.stopPropagation() .prevent: 阻止默认事件&#xff0c;相当于调用event.preventDefault() .capture: 使…

WordPress伪静态设置

为什么要设置WordPress伪静态&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;中&#xff0c;静态URL通常被认为更易于搜索引擎爬虫抓取和索引&#xff0c;有助于提高网站的搜索引擎排名。 WordPress伪静态设置方法主要依赖于服务器环境&#xff0c;以下是针对不同服务器…

【简道云 -注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

【系统架构设计师】2023年真题论文: 论面向对象分析的应用与实现(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2023年 试题1)解题思路面向对象分析的概念与核心技术面向对象分析的流程面向对象分析的应用案例论文素材参考真题题目(2023年 试题1) 面向对象设计是一种软件设计方法,它将系统看作一组相互作用的对…

太速科技-712-6U VPX飞腾处理器刀片计算机

6U VPX飞腾处理器刀片计算机 一、产品概述 该产品是一款基于国产飞腾FT-2000四核处理器或D2000八核处理器的高性能6U VPX刀片式计算机。产品提供了可支持全网状交换的高速数据通道&#xff0c;其中P1、P2均支持1个PCIe x16 Gen3或2个PCIe x8 Gen3或4个PCIe x4 Gen3总…

安卓设备adb执行AT指令控制电话卡

文章目录 AT指令起源与发展&#xff1a;基本格式&#xff1a;常见应用领域及功能&#xff1a;不同设备中的应用&#xff1a; 安卓获取modem设备输入符入口安卓设备输入AT指令 AT指令 AT 指令是 Attention 的缩写&#xff0c;是一种用于控制调制解调器等通信设备的指令集。 起…

uniapp项目 存储数据到手机本地

打开manifest.json&#xff0c;在App权限配置中&#xff0c;添加读取和写入的权限 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&g…

在 VS Code 中规范化 Git 提交消息并自动生成 CHANGELOG.md

1. 使用 Commitizen 规范化 Git 提交消息 首先&#xff0c;安装 Commitizen 和适用于 Angular 提交规范的适配器&#xff1a; npm install -g commitizen commitizen init cz-conventional-changelog --save-dev --save-exact这样&#xff0c;提交信息将遵循 Angular 规范&am…

c++模板入门

c系列模板入门 文章目录 c系列模板入门一、模板概念引入二、函数模板2.1、函数模板的概念2.2、函数模板的定义格式2.3、函数模板的使用 三、类模板1.1、什么是类模板1.2、类模板的定义格式1.3、类模板于函数模板的区别 一、模板概念引入 在程序设计中我们经常需要对两个数据进…

MyBatis-Plus中AbstractJsonTypeHandler使用小结

在 MyBatis-Plus 中&#xff0c; AbstractJsonTypeHandler 是一个用于处理 JSON 数据类型的抽象类。 一、作用 1. 数据库与 Java 对象之间的 JSON 数据转换 当数据库中的字段类型为可以存储 JSON 格式数据的类型&#xff08;如 MySQL 的 JSON 类型、Oracle 的 CLOB 等可存储…

谷粒商城のsentinelzipkin

文章目录 前言一、Sentinel1、什么是Sentinel2、项目配置3、使用案例3.1、流控3.2、降级3.3、黑白名单设置 二、Zipkin1、什么是Zipkin2、项目配置3、整合案例 前言 本篇介绍Spring Cloud Ali的sentinel组件&#xff0c;用于对微服务的熔断降级&#xff0c;以及链路追踪zipkin的…

Freertos学习日志(1)-基础知识

目录 1.什么是Freertos&#xff1f; 2.为什么要学习RTOS&#xff1f; 3.Freertos多任务处理的原理 1.什么是Freertos&#xff1f; RTOS&#xff0c;即&#xff08;Real Time Operating System 实时操作系统&#xff09;&#xff0c;是一种体积小巧、确定性强的计算机操作系统…

富格林:拆穿欺诈套路平稳出金

富格林认为&#xff0c;投资者产生的欺诈亏损多半是由于被出金骗局的花言巧语所迷惑&#xff0c;以为真的躺着就可以轻轻松松赚大钱&#xff0c;结果最后发现连本金都追不回来。事实上&#xff0c;投资市场并不像大家想得那么简单&#xff0c;要想拆穿欺诈套路实现平稳出金&…