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

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

nanshan 2025-03-10 18:54 6 浏览 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,可以有效提升应用性能,减少数据库查询次数,并优化系统响应速度。

相关推荐

使用nginx配置域名及禁止直接通过IP访问网站

前段时间刚搭建好这个网站,一直没有关注一个问题,那就是IP地址也可以访问我的网站,今天就专门研究了一下nginx配置问题,争取把这个问题研究透彻。1.nginx配置域名及禁止直接通过IP访问先来看n...

如何在 Linux 中使用 PID 号查找进程名称?

在Linux的复杂世界中,进程是系统运行的核心,每个进程都由一个唯一的「进程ID」(PID)标识。无论是系统管理员在排查失控进程,还是开发者在调试应用程序,知道如何将PID映射到对应的进程名称都是一项...

Linux服务器硬件信息查询与日常运维命令总结

1.服务器硬件信息查询1.1CPU信息查询命令功能描述示例lscpu显示CPU架构、核心数、线程数等lscpucat/proc/cpuinfo详细CPU信息(型号、缓存、频率)cat/proc/c...

Ubuntu 操作系统常用命令详解(ubuntu常用的50个命令)

UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...

从 0 到 1:打造基于 Linux 的私有 API 网关平台

在当今微服务架构盛行的时代,API网关作为服务入口和安全屏障,其重要性日益凸显。你是否想过,不依赖商业方案,完全基于开源组件,在Linux上构建一个属于自己的私有API网关平台?今天就带你...

Nginx搭建简单直播服务器(nginx 直播服务器搭建)

前言使用Nginx+Nginx-rtmp-module在Ubuntu中搭建简单的rtmp推流直播服务器。服务器环境Ubuntu16.04相关概念RTMP:RTMP协议是RealTi...

Linux连不上网?远程卡?这篇网络管理指南你不能错过!

大家好!今天咱们聊个所有Linux用户都躲不开的“老大难”——网络管理。我猜你肯定遇到过这些崩溃时刻:新装的Linux系统连不上Wi-Fi,急得直拍桌子;远程服务器SSH连不上,提示“Connecti...

7天从0到上线!手把手教你用Python Flask打造爆款Web服务

一、为什么全网开发者都在疯学Flask?在当今Web开发的战场,Flask就像一把“瑞士军刀”——轻量级架构让新手3天速成,灵活扩展能力又能支撑百万级用户项目!对比Django的“重型装甲”,Flas...

nginx配置文件详解(nginx反向代理配置详解)

Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django,Flask,et...

30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务

在云计算时代,利用容器技术快速部署应用已成为开发者必备技能。本文将手把手教你在阿里云轻量应用服务器上,通过Docker高效部署Nginx并发布静态网站,全程可视化操作,新手也能轻松上手!一、准...

Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置

各位摸鱼搭子们!今天咱不聊代码里的NullPointerException,改聊点「摸鱼必备生存技能」——Nginx配置!先灵魂拷问一下:写了一堆接口却不会部署?服务器被恶意请求打崩过?静态资源加载...

如何使用 Daphne + Nginx + supervisor部署 Django

前言:从Django3.0开始支持ASGI应用程序运行,使Django完全具有异步功能。Django目前已经更新到5.0,对异步支持也越来越好。但是,异步功能将仅对在ASGI下运行的应用程序可用...

Docker命令最全详解(39个最常用命令)

Docker是云原生的核心,也是大厂的必备技能,下面我就全面来详解Docker核心命令@mikechen本文作者:陈睿|mikechen文章来源:mikechen.cc一、Docker基本命令doc...

ubuntu中如何查看是否已经安装了nginx

在Ubuntu系统中,可以通过以下几种方法检查是否已安装Nginx:方法1:使用dpkg命令(适用于Debian/Ubuntu)bashdpkg-l|grepnginx输出...

OVN 概念与实践(德育概念的泛化在理论和实践中有什么弊端?)

今天我们来讲解OVN的概念和基础实践,要理解本篇博客的内容,需要前置学习:Linux网络设备-Bridge&VethPairLinux网络设备-Bridge详解OVS+Fa...

取消回复欢迎 发表评论: