百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

在Spring Boot项目中整合JetCache缓存操作?

nanshan 2025-03-10 18:54 4 浏览 0 评论

缓存技术作为现代应用程序中比较重要的一种提高应用性能以及响应速度的方案。在Web应用程序开发中扮演的重要的角色,而在Java应用程序中,JetCache是一个比较轻量级的缓存框架,尤其适合在一些分布式高并发场景中使用,支持了多种的缓存后端服务,例如比较常见的Redis、Ehcache、Caffeine等,当然JetCache中还提供了各种的缓存管理策略。

下面我们就来详细介绍一下如何在Spring Boot中整合JetCache来实现缓存操作。帮助提升应用的性能和响应效率。

JetCache概述

JetCache是Java中提供的一个缓存库,其目的就是为了提供高效、快速灵活的缓存集成方案,其主要特点如下所示。

  • 高效:支持多种缓存引擎(Redis、Caffeine、Ehcache等)并且可以无缝切换。
  • 简单:JetCache提供了一套非常简洁易用的API,可以减少大量的配置和管理工作。
  • 灵活:支持多种缓存管理策略,如基于注解的缓存、缓存的过期时间控制等。

核心功能如下所示。

  • 注解驱动的缓存。
  • 支持多种缓存存储(Redis、Caffeine等)。
  • 高效的缓存更新策略(如缓存穿透、缓存击穿、缓存雪崩等)。

下面我们就来看看如何在Spring Boot中使用JetCache

在Spring Boot中整合JetCache

添加依赖

想要使用JetCache就必须先要添加JetCache的依赖配置,如下所示,在POM文件中添加如下的配置依赖。


    
    
        com.alicp
        jetcache-starter
        2.8.3 
    

    
    
        org.springframework.boot
        spring-boot-starter-data-redis
    

这里通过jetcache-starter来实现快速配置启动JetCache,如果需要用到Redis作为缓存后端存储,那么就还需要添加Redis的Spring Boot Starter依赖。

配置JetCache

相比较而言,JetCache的配置相对来说比较简单,如下所示,在Spring Boot配置中通过下面的配置项来添加JetCache的配置,这里我们通过Redis作为缓存配置后端。

jetcache:
  statIntervalMinutes: 60   # 设置统计输出的间隔时间,单位为分钟
  areaInCacheName: true     # 是否在缓存名称中加入区域名
  local:
    default:
      type: caffeine        # 使用Caffeine作为本地缓存
      limit: 10000          # 本地缓存限制数量
      expireAfterWriteInMillis: 3600000 # 1小时过期
  remote:
    redis:
      address: redis://localhost:6379  # Redis连接地址
      password: your-redis-password   # Redis密码,如果没有密码则不用设置
      database: 0  # Redis数据库索引
      expireInSeconds: 3600  # Redis缓存过期时间,单位秒
  • local配置指定了本地缓存的类型(如Caffeine)及其属性。
  • remote配置指定了远程缓存的存储类型(如Redis)及相关配置。
  • expireAfterWriteInMillis用于控制缓存的过期时间,单位为毫秒。

启用JetCache注解支持

在Spring Boot中,JetCache可以通过注解来实现缓存功能,为了能够使用该功能,就必须要启动该功能,我们可以通过配置类中添加@EnableMethodCache注解来启动该功能,如下所示。

import com.alicp.jetcache.anno.EnableMethodCache;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableMethodCache(basePackages = "com.example")  // 在指定包下启用缓存
public class JetCacheConfig {
}

接下来就是使用JetCache注解来实现缓存操作如下所示。

缓存查询结果

假设我们有一个查询用户信息的场景,可以使用@Cacheable注解来缓存查询结果

@Service
public class UserService {

    // 通过用户ID查询用户信息,并将查询结果缓存
    @Cacheable(name = "userCache-", key = "#userId")
    public User getUserById(Long userId) {
        // 模拟从数据库获取用户数据
        System.out.println("Fetching user from database...");
        return new User(userId, "John Doe");
    }
}
  • name = "userCache-":缓存的名称前缀,可以在此后缀部分加入具体的缓存区分标识。
  • key = "#userId":缓存的键值,这里使用方法参数userId作为缓存的键。
  • JetCache会在第一次查询时将结果缓存,下次请求相同用户ID时会直接从缓存中返回结果,避免重复查询数据库。

更新缓存

当我们需要更新缓存时,可以使用@CacheUpdate注解来实现,如下所示,更新用户信息时,我们希望更新缓存中的数据。

@Service
public class UserService {

    @CacheUpdate(name = "userCache-", key = "#user.id")
    public void updateUser(User user) {
        // 模拟更新用户数据
        System.out.println("Updating user...");
        // 进行数据库更新操作
    }
}
  • @CacheUpdate:更新缓存内容,可以在缓存内容变更时自动更新缓存中的数据。
  • name和key的定义和@Cacheable注解一致。

清除缓存

当数据被删除或不再有效时,我们可以使用@CacheEvict注解清除缓存

@Service
public class UserService {

    @CacheEvict(name = "userCache-", key = "#userId")
    public void deleteUser(Long userId) {
        // 模拟删除用户
        System.out.println("Deleting user...");
        // 进行数据库删除操作
    }
}
  • @CacheEvict:用来清除缓存。
  • name和key的定义和其他注解相同。

使用Caffeine作为本地缓存

JetCache支持多种缓存后端,如果在实际开发中,当没有没有外部缓存存储时候,需要使用使用本地缓存来进行存储,我们可以通过Caffeine来实现相关的操作,Caffeine高效且支持多种缓存策略,提供了更加灵活的配置方案。

jetcache:
  local:
    default:
      type: caffeine
      limit: 10000
      expireAfterWriteInMillis: 3600000 # 缓存1小时过期

总结

通过上面的步骤实现,我们就可以在Spring Boot项目中通过JetCache来实现缓存操作功能,JetCache不仅支持本地缓存(如Caffeine),还支持远程缓存(如Redis),能够根据不同的应用场景灵活选择缓存存储方式。通过合理配置和使用JetCache,可以有效提升应用性能,减少数据库查询次数,并优化系统响应速度。

相关推荐

小白初学linux之无法修改系统分辨率

/*此文是做为自己的一个总结还有就是最好也可以给大家提供一些帮助。*/时间:2020年7月14日11:28:41我安装的是Ubuntu20.04LTS,昨天处理的是,grub的引导问题,因为是...

Ubuntu 如何启动、停止或重启服务

在本文中,我们向您介绍在Ubuntu中启动、停止和重启服务的方法。列出Ubuntu中的所有服务在开始之前,先获取计算机上所有服务的列表,因为我们需要知道服务名称来管理服务。service--...

Win11学院:如何在Windows 11上使用WSL安装Ubuntu

IT之家2月18日消息,科技媒体pureinfotech昨日(2月17日)发布博文,介绍了3中简便的方法,让你轻松在Windows11系统中,使用WindowsSubs...

Linux安装中文输入法-Google拼音输入法,搜狗输入法

主要步骤,选择适合自己的尝试:1)卸载之前没装好的搜狗输入法。@:~/Downloads$sudoapt-getremovefcitx*删除依赖库@:~/Downloads$sudoap...

Ubuntu 22.04 请谨慎使用搜狗输入法,可能是你当机原因

在Ubunutu下没有什么有名的输入法,也就听说搜狗输入法有Linux版本,所以特意到官网去找了下载。在Ubuntu新版本里,他仍然用的是fcitx框架的输入引擎,而不是默认的ibus,所以要先把i...

前钢后胶!徐工XMR403VT小型压路机有点意思

【第一工程机械网原创】在越来越注重施工品质,对项目管理越来越精细化的今天,施工方在施工设备选择上,也越来越讲究设备的配套分工,因此小型压路机的应用场景也越来越多。徐工XMR403VT小型压路机高度集...

图大明白 | 404错误为什么是Not Found?为什么是404?

“404错误”大家都不陌生吧?常规来讲它长这样或者长这样艺术一点的长这样404NotFound意思就是所请求的页面不存在或者已被删除被称为“互联网最后一个界面”有很多同学发出疑问:为什么是404?...

Nginx负载均衡安全配置说明2(nginx负载均衡部署)

上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条...

惊艳写真系列第403期,本期主人公—叶青

惊艳写真系列第403期,本期主人公—叶青制作不易,欢迎各位看官提供宝贵意见。如果您喜欢记得关注,么么哒。您的每一份点赞和关注都是对作者的最大认可(图片素材均来源于网络,如有侵权联系删除。)本篇是写惊艳...

先秦布币之尖足布、圆足布、方足布,今年圆足最高拍卖价16万一枚

在战国魏、韩地区诞生桥足平首布、锐角平首布之后,赵也诞生了尖足平首布,并且在尖足布的基础上,后来相继派生出了圆足布、三孔布,以及类圆足布和类方足布。一尖足布尖足布是从耸肩尖足空首布演变而来的,是黄河...

403 禁止访问错误的全面排查与解决方案

当遇到403Forbidden错误时,意味着服务器已接收并理解请求,但拒绝执行访问操作。以下从用户端、服务器端等多个维度,提供分步排查与解决方法。一、用户端基础排查1.检查URL准确性确认...

这才是2019年夏最高颜值的泳装(2019夏季泳装秀)

最近的天气是越来越热了,又到了暑期泳衣勇闯海滩的时刻了,打开ins,微博满满地都是各大博主晒的泳装照,明星们也纷纷跑到海边去度假了。虽然我们没有超模般地身材,但是到了海边我们也要成为人群中最亮眼的那颗...

朋友圈爆火!这组《衡中班主任的一天》漫画,感动了无数人!

很多人觉得做老师很轻松他们说有些老师一天一节课就下班了有双休,还有寒暑假,真让人羡慕呀······但事实真是这样吗?最近衡水中学的赵心扬同学画了一组漫画形象地还原了衡中班主任一天的生活那么衡中班主任一...

国家安全教育 | 一组漫画,带你走进国家安全!

当前,我国面临哪些安全威胁?下面带你来看一组漫画!①你要配合,注意保密。我绝不对别人讲。②这件事,千万别对别人讲。③咱单位的…喂!老k!你要当心,有风声了!④你的泄密行为已触犯了国家法律!①请你协助了...

400、403、404、405,访问网页时出现这些代码是什么意思?

今天小泽访问一个页面时,出现了403,很抱歉,您的访问请求被禁止的提示。相信经常用电脑访问网页的朋友都遇到过这种情况,有的网页提示错误代码403,有的提示404,那这些代码都代表了什么呢?有什么含义呢...

取消回复欢迎 发表评论: