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

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

上文中我们学习了springboot中缓存的基本使用。缓存分为本地caffeine缓存和远程redis缓存。现在有一个小小的问题,我想使用本地caffeine缓存和远程redis缓存组成二级缓存。还想保证他们的一致性,这个事情该怎么办呢?

Jetcache框架为我们解决了这个问题。

JetCache‌是一个由阿里巴巴开发的基于Java的缓存系统封装,旨在通过统一的API和注解简化缓存的使用。JetCache提供了比SpringCache更强大的功能,包括支持TTL(Time To Live,生存时间)、两级缓存、分布式自动刷新等特性。它支持多种缓存实现,如RedisCache、CaffeineCache(内存缓存)和LinkedHashMapCache(内存缓存),并且可以轻松添加新的缓存实现‌。

简单讲:jetcache不是缓存,他是保证缓存的一致性的框架。

JetCache支持的本地缓存类型包括LinkedHashMapCache和CaffeineCache。

‌JetCache支持的远程缓存类型包括redis、‌Tair等。

放一下官方文档:

jetcache/docs/CN/Readme.md at master · alibaba/jetcache · GitHub

官方文档中有部分配置是有bug的,都是坑。后边我们会说到。

下面我们在Springboot项目中集成jatcache。

一:添加pom依赖:

这里需要注意一下,jetcache支持不同的springboot-redis客户端。分别是:jedis和lettuce

Jedis和Lettuce的区别是什么呢?

Jedis 和 Lettuce 都是用于 Java 语言连接 Redis 的客户端,Jedis主要是同步方法,Lettuce主要是异步高性能,基于Netty。

具体请移步《【SpringBoot】Jedis和Lettuce的区别》

扯远了,回到主题:

如果你使用的是Lettuce客户端,那就引入:

<!-- 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.7.5</version>
</dependency>

如果你使用的是Jedis客户端,那就引入:

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

我这里使用的是lettuce

二:配置yml文件

这部分也是一样的,是根据你是用的redis客户端来选择的。这部分上边已经说过了,这里不再赘述,我这里是用的是lettuce。官方文档如下图所示:

1.png.jpg

这里得配置写法要参考一下官方文档中内容。

Application.yml内容如下:

jetcache:
  ## 统计间隔,0表示不统计,开启后定期在控制台输出缓存信息
  statIntervalMinutes: 15
  ## 是否把cacheName作为远程缓存key前缀
  areaInCacheName: false
  ## 本地缓存配置
  local:
    default: ## default表示全部生效,也可以指定某个cacheName
      ## 本地缓存类型,其他可选:caffeine/linkedhashmap
      type: caffeine
      keyConvertor: jackson
      #expireAfterWrite: 1800s # 缓存写入后10分钟过期
  # lettuce远程

http://www.kler.cn/a/420878.html

相关文章:

  • centos 手动安装libcurl4-openssl-dev库
  • 基于Transformer的编码器-解码器图像描述模型在AMD GPU上的应用
  • Ubuntu24 cgroupv2导致rancher(k3s)启动失败的处理
  • 使用go语言写一个脚本 实现WebSockt连接 用户发送a 得到返回b
  • Python实现网站资源批量下载【可转成exe程序运行】
  • 08-模块与包
  • 微软的重大突破:bitnet.cpp 开启 AI 本地CPU运行新时代
  • 【机器学习】Sigmoid函数在深层神经网络中存在梯度消失问题,如何设计一种改进的Sigmoid激活函数,既能保持其概率预测优势,又能避免梯度消失?
  • Linux 系统中常用的命令
  • scroll-view组件,在iOS设备上禁用橡皮筋回弹效果
  • VTK知识学习(16)- 基本数据结构之单元类型
  • React进阶面试题(四)
  • Unity中,Canva的三种渲染模式
  • 数字与字母互换python
  • golang 并发编程,每日一题
  • chrome使用问题记录
  • 【CSP CCF记录】202305-1第30次认证 重复局面
  • 服务器如何划分空间?
  • 【IC验证】systemverilog_函数和任务
  • 杨辉三角形-多语言
  • 气象数据下载服务平台(二)
  • 超文本协议之HTML(泷羽sec)
  • Mysql读写分离分库分表
  • MySQL中的幻读问题
  • Linx下自动化之路:JDK1.8 安装包一键安装脚本实现离线极速部署
  • 高校数字化运营平台解决方案:构建统一的服务大厅、业务平台、办公平台,助力打造智慧校园