Spring Boot 2.1.4整合JetCache缓存框架实现本地caffeine远程redis存储(一、使用Lettuce)

JetCache获取lettuce客户端 JetCache目前支持两种redis客户端,分别是jedis和lettuce,由于自身一些需求,原生的jetCacheAPI满足不了需求,故需要在此基础上使用redis客户端作为支持,目前公司在Apollo上配置了Lettuce客户端,故本文以lettuce客户端为例。 新增一个redis配置类 import com.alicp.jetcache.autoconfigure.LettuceFactory; import com.alicp.jetcache.autoconfigure.Redi. 阅读详情

JetCache是一个阿里巴巴开源的基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用,SpringBoot2.1.4截止到当前为止,Maven仓库发布的整合JetCache的版本为2.6.0.M1,JetCache提供了 本地缓存LinkedHashMapCache和CaffeineCache( 一个高性能的 Java 缓存库)两种,远程可以支持Tair,Redis,今天我们就来选择使用 Caffeine和Redis进行整合来实现二级缓存.

首先要引入依赖,

Caffeine是Spring Boot 2取代Guava,内置的本地缓存

<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>

Redis是远程缓存,Redis比较常用的客户端有Jedis,Lettuce,Redisson,Spring Boot 2不再推荐使用Jedis作为redis的缓存客户端,而默认采用lettuce作为默认客户端,当然还有Redisson,但是由于JetCache不支持Redisson,只支持jedis和letture.所以我们只能选择这两个。JetCache的官方文档比较常用的示例都是用的Jedis或者使用的Redis哨兵集群模式,如果你的Redis是单点服务器,那么使用jedis也可以。这里我们拿Lettuce作为客户端举例,Redis则是采用的是Cluster集群模式。

<!-- https://mvnrepository.com/artifact/com.alicp.jetcache/jetcache-starter-redis-lettuce -->
<dependency>
    <groupId>com.alicp.jetcache</groupId>
	<artifactId>jetcache-starter-redis-lettuce</artifactId>
	<version>2.6.0.M1</version>
</dependency>

版本为最新的2.6.0.M1,因为JetCache 2.3以上版本才支持Lettuce,

同时还要引入Redis的依赖

<!-- 添加对redis的支持 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- 添加对连接池的支持 -->
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-pool2</artifactId>
</dependency>

application.yml文件中要配置相关配置,有一点JetCache做的不好,就是yml下jetcache没有代码提示

jetcache:
  statIntervalMinutes: 1 #统计间隔
  areaInCacheName: false
  local:
    default: #默认area
      type: caffeine
      keyConvertor: fastjson
  remote:
    default:
      type: redis.lettuce #使用lettuce
      keyConvertor: fastjson
      valueEncoder: java
      valueDecoder: java
      poolConfig:
        minIdle: 1
        maxIdle: 50
        maxTotal: 1000
        maxWait: 1000  
#     uri: ['redis://password@192.168.14.231:6379/0','redis://password@192.168.14.232:6379/0','redis://password@192.168.14.233:6379/0']
      uri:
        - redis://password@192.168.14.231:6379/0  #redis://密码@IP:端口/库
        - redis://password@192.168.14.232:6379/0
        - redis://password@192.168.14.233:6379/0
      readFrom: masterPreferred #master优先

JetCache还内置了统计功能,statIntervalMinutes为统计间隔时间,这些基本配置可以从git上wiki获取。

如果除了使用JetCache注解的方式使用缓存以外,如果你还需要通过使用StringRedisTemplate或者RedisTemplate的方式使用Reids,那么还需要配置,Spring Boot 2默认也是是要弄个lettuce来作为java客户端连接的

spring:
  redis:
    cluster:
      nodes: 
        - 192.168.14.231:6379
        - 192.168.14.232:6379
        - 192.168.14.233:6379
    password: password
    lettuce:
      pool:
        min-idle: 5
        max-idle: 50
        max-active: 100
        max-wait: 1000

然后还要在Application.java启动文件中添加注解、com.xxxx为自己的项目包名

@SpringBootApplication
@EnableMethodCache(basePackages = { "com.xxxx" })
@EnableCreateCacheAnnotation
public class Application {

}

如何通过JetCache的注解使用

@RestController
public class UserController {

    // 定义一个是String类型的远程缓存
    @CreateCache(name ="i5xforyou.username", expire = 120, cacheType = CacheType.REMOTE)
    private Cache<String, String> userNameCache;
    // 定义一个是User对象的二级缓存(本地+远程)
    @CreateCache(name ="i5xforyou.user", localExpire = 60, localLimit = 100, expire = 120, cacheType = CacheType.BOTH)
    private Cache<String, User> userCache;


    
    @GetMapping(value = "/getUser")
    public String getUserInfo() {
            
            userNameCache.put("123", "userName");
            System.out.println("userNameCache : " + userNameCache.get("123"));
            
            User user = new User();
            user.setUserName("user.userName");
            userCache.put("1234", user);
            System.out.println("userCache: " + userCache.get("1234").geUserName());

            return "";
        
    }
    
}

这里有一点要特别注意的: 就是User一定要 implements Serializable 进行序列化,否则userCache.get("1234")将会取出来一个null对象,因为无法存进Redis缓存内。

通过以上的配置,就可以使用JetCache注解的方式来使用缓存了。其他用法还可以继续关注https://github.com/alibaba/jetcache 来学习

Spring boot2.7整合jetcache 远程redis缓存方案 简单说 JetCache实体类 调用其中的 put函数 传入键值对 键为 name 唯一标识 值为 小猫猫 存入的内容。这里 我就保持原样了 然后 要注意 只有 启动类 加了 @EnableCreateCacheAnnotation。这个 就是个 starter 它做了整合 因此也不需要额外去导 redis的包了。然后 我们来写 application 的内容 我这里 是yml 格式的。然后 我们需要在 用缓存的类中 注入 Cache。 阅读详情

相关推荐

Springboot(四十九)SpringBoot3整合jetcache缓存

jetcahe2.7的两级缓存支持更新以后失效其他JVM中的local cache,但多个服务共用redis同一个channel可能会造成广播风暴,需要在这里指定channel,你可以决定多个不同的服务是否共用同一个channel。每个缓存实例的最大元素的全局配置,仅local类型的缓存需要指定。注意是每个缓存实例的限制,而不是全部,比如这里指定100,然后用@CreateCache创建了两个缓存实例(并且注解上没有设置localLimit属性),那么每个缓存实例的限制都是100。序列化器的全局配置。

camellia的博客 2291

jetcache二级缓存配置redis集群实战教学

jetcache二级缓存配置redis集群实战教学1.增加Maven配置:2.配置文件内容:3.启动类4.@CreateCache使用5.@Cached使用 1.增加Maven配置: <!--二级缓存 --> <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>j...

weixin_41677422的博客 5766

激光SLAM算法性能对比:在Ubuntu20.04上实测Point-LIO/FAST_LIO2/Faster-LIO的运行效果

本文在Ubuntu 20.04平台上对Point-LIO、FAST-LIO2和Faster-LIO三款激光SLAM算法进行了深度实测与性能对比。通过量化分析绝对轨迹误差、CPU/内存占用及单帧处理延迟等核心指标,结合室内外场景数据,为高精度测绘、服务机器人及自动驾驶等不同应用场景提供了清晰的选型指南和实战调优建议。

weixin_28335283的博客 368

Spring Boot 2.5 集成缓存框架 JetCache 2.7

JetCache 是阿里出品的一款缓存框架,其提供了基于接口的缓存以及能够实现本地和远程二级缓存(本地缓存是当前 JVM 中的LinkedHashMap,远程缓存为Redis),在提高系统吞吐量的同时,也极大地方便了代码编写。本文将介绍基于 Spring Boot 2.5 简易集成缓存框架 JetCAche 2.7。1 JetCache 适用于标准的查询单条数据或者查询列表数据的接口进行完整的缓存,这就要求接口的入参必须包含唯一健,且返回值必须是DTO对象。同时对于分页查询的接口无法实现缓存,也没有意义。

Mrqiang9001 3931

【SAP PO】SAP PO 接口配置完整教程之一RFC服务发布

SAP RFC开发,PO接口配置

XLevon的博客 2万+

Fiddler everywhere的一些基础操作

网上能搜到的Fiddler everywhere使用教程太少,于是我整理了一些自己实操成功的内容,包括Fiddler everywhere的Mock测试、弱网测试等基础操作,后续还会持续更新。操作系统:macOS使用工具:Fiddler everywhere 5.10.0本文简单介绍了使用Fiddler everywhere进行的Mock测试和弱网测试,而Fiddler everywhere提供了更多的其他实用的功能,我会在后期进行一个持续的学习和更新。

weixin_44346646的博客 2478

Spring Boot 2.1.4整合JetCache缓存框架实现本地caffeine远程redis存储(二、使用Redis-SpringData)

五一放假过后JetCache进行了最新版本2.6.0.M2 的升级 从此版本的Git提交记录看,此版本增加了对 spring-boot-starter-data-redis 的支持,这意味着配置更简单了,上一个版本对Redis的支持是使用Lettuce,直接对接lettuce,如果需要使用RedisTemplate,之前的配置方式需要配置jetCache,同时要配置spring.redi...

ankeway的博客 5236

Tartancalib标定OAK-FFC_4p(上)

1.使用Tartancalib标定双目或多目相机前,先对单个相机标定获得内参,再获得外参。

qq_51731421的博客 1277

5个必知必会:ContiNew Admin多租户管理框架实战指南

ContiNew Admin是一款专注于设计与代码细节的高质量多租户中后台管理系统框架,致力于为企业级应用开发提供开箱即用的解决方案。作为"Almost最佳后端规范"的实践者,它基于Spring Boot3(Java17)、Vue3 & Arco Design等现代技术栈构建,提供完整的SaaS租户架构和RBAC权限管理体系,让开发者能够快速构建安全、稳定、可扩展的管理系统。 ## 为什么选择C

gitblog_00564的博客 255

海康VisionMaster全局通信实战:从数据接收到流程触发

本文详细解析了海康VisionMaster全局通信的实战应用,重点阐述了如何通过配置通信模块与编写全局脚本,实现从外部设备(如PLC)接收数据并触发内部视觉流程。文章以TCP/IP通信为例,深入讲解了数据接收、解析、全局变量设置及流程触发的核心代码与调试技巧,帮助用户打通自动化项目中的设备联动关键环节。

weixin_29295541的博客 569

三种 绘制奈奎斯特曲线 的方法

如何绘制Nyquist曲线 提供三种绘制方法,其中使用最广泛的是概略图绘制方法 ①解析法绘制 ②概略图法绘制 ③MATLAB绘制

weixin_46664967的博客 6万+

AI模型、编程工具与缓存的三层耦合决策地图

在现代软件开发中,AI代码模型并非孤立存在,而是与IDE编程工具、应用级缓存机制构成深度嵌套的技术因果链。理解其底层原理——如模型推理如何生成AST缓存、工具链如何影响上下文感知精度、缓存策略如何反向约束模型调用频次——是实现稳定落地的关键。这种耦合关系直接决定系统韧性、调试效率与线上一致性。尤其在Spring Boot多模块工程、高并发Redis缓存场景下,DeepSeek-Coder等专用模型与JetBrains AI Assistant等深度集成工具的协同表现,远超参数堆砌式选型。本文聚焦真实工作流中

weixin_33898233的博客 421

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

修复Oracle MySQL Server 安全漏洞(CVE-2023-0464)

路~可以走过 3683

学习之-JetCacheJava缓存框架最全详解

JetCache是一个Java缓存框架,它提供了对多种缓存技术的支持,包括Redis、Memcached、Caffeine等。JetCache的设计目标是提供一个高性能、易于使用的缓存框架,同时保持灵活性和可扩展性。

Alice_qixin的博客 9348

基于STM32L4XX、HAL库的MAX13487EESA RS485总线收发器驱动程序设计

MAX13487EESA是一款3.3V供电的RS-485/RS-422收发器,由Maxim Integrated生产。PA4 (控制引脚) ---> /RE, DE (连接在一起)具有±15kV ESD保护的驱动器输出和接收器输入。半双工RS-485/RS-422通信。工业温度范围:-40°C至+85°C。工作电压范围:3.0V至3.6V。数据速率高达250kbps。

zhusl6688的博客 685

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Redis-JetCache缓存集成

JetCache缓存系统项目集成。 JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用

我是一只小小鸟,想要飞呀飞的更高。 2621

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jetcache lettuce.uri与redis连接出现bug记录

jetcache使用lettuce无法解析uri中@,lettuce单机出现redis拒绝问题

sirwsl 3813

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spring Boot 整合JetCache缓存框架实现本地caffeine远程redis存储

Spring Boot 整合JetCache缓存框架实现本地caffeine远程redis存储 JetCache主要通过@Cached和@CreateCache实现缓存,@Cached是在接口方法或者类方法上添加缓存,一般以参数为key,以返回值为value存入缓存中。@CreateCache是直接创建一个缓存实例,然后调用put(T key, T value)、get(T key)等方法实现缓存。 <dependency> <groupId>org

ggfvg777的博客 1900

缓存框架jetcache+本地缓存Caffeine

jetcache框架

usa_washington的博客 2718

【JetCache】JetCache的使用方法与步骤

本文目录一、背景描述二、JetCache特点与要求2.1 JetCache的特点2.2 JetCache的要求三、使用步骤3.1 引入依赖3.2 application.yml配置3.3 启动类注解3.4 方法上添加注解 四、依赖哪个Jar? 今天来介绍一下由 Alibaba 开源的一款缓存框架 JetCache。其号称比 Spring Cache 用起来更加好用,在我使用之后发现确实比较好用,步骤也非常简单。JetCache 是一个基于Java 的缓存系统封装,提供统一的API和注解来简化缓存的使用。..

No8g攻城狮的博客 1万+

JetCache简介以及配置说明

简介 JetCache是一个基于java的缓存系统封装,提供统一的API和注解简化缓存的使用。JetCache提供了比SpringCache更强大的注解,可以原生的支持TTL、两级缓存、分布式自动刷新,提供了Cache接口用于手工缓存操作。当前有四个实现,RedisCache、TairCache、CaffeineCache和一个简易的LinkedHashMapCache,要添加新的实现也是非常简单。它的特性: ...

lgxzzz的博客 6493

SpringCache、JetCache、CaffeineCache本地缓存和其他工具使用

一、CaffeineCache 依赖 <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.8.4</version> </dependency>

点点的博客 3102

基于JetCache整合实现一级、二级缓存方案(方案实现)

在高并发系统中,为了减少数据库压力,就有了像Redis这种的内存缓存。通过内存缓存能够提高查询速度,但是查询并发量非常的大的场景,频繁的查询Redis,会有明显的网络IO消耗,针对这种查询非常频繁的数据(热点key),我们可以考虑本地进程级缓存,如:Caffeine。当有符合条件的数据时,可以直接查询本地缓存,而不用通过网络到Redis中去获取,这样就形成了两级缓存。本文通过JetCache缓存框架整合Caffeine、Redis缓存,进而实现扩展Hibernate、Mybatis、Spring Cache

qq_25409421的博客 2917

SpringBoot和redis的使用

spring-boot-starter-data-redis SpringBoot提供了对redis继承的组件包:spring-boot-starter-data-redis,依赖于spring-data-redis和lettuce,SpringBoot1.0默认使用的是Jedis客户端,2.0换成了Lettuce。 Lettuce:是一个可伸缩线程安全的Redis客户端,多个线程共享同一个RedisConnection,它利用优秀Netty NIO框架来有效管理多个连接; Spring Data:是Sp

mashaokang1314的博客 347

jetCache整合本地、远程缓存使用redis

阿里出的jetCache,对spring的Cache进行了封装 → 看成是一个底层框架,可以替代spring cache实现本地与远程缓存同时存在的效果 2 配置文件 3 引导类加注解@EnableCreateCacheAnnotation 4 实现类 用注解@CreateCache注入cache put(key,value) get(key) 测试别忘了打开redis的服务端关于.....................

m0_45877477的博客 2680

基于JetCache整合实现一级、二级缓存方案(前置基础知识与原理)

在高并发系统中,为了减少数据库压力,就有了像Redis这种的内存缓存。通过内存缓存能够提高查询速度,但是查询并发量非常的大的场景,频繁的查询Redis,会有明显的网络IO消耗,针对这种查询非常频繁的数据(热点key),我们可以考虑本地进程级缓存,如:Caffeine。当有符合条件的数据时,可以直接查询本地缓存,而不用通过网络到Redis中去获取,这样就形成了两级缓存。本文介绍基于JetCache缓存框架整合Caffeine、Redis缓存,进而扩展Hibernate、Mybatis、Spring Cache

qq_25409421的博客 3420
上一篇: Nepxion/Discovery灰度发布组件的使用教程(一)、灰度组件的配置及灰度路由的使用
下一篇: Spring Boot 2.1.4整合JetCache缓存框架实现本地caffeine远程redis存储(二、使用Redis-SpringData)
幕紫
博客等级 码龄16年 56粉丝 32原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值