Spring Boot整合缓存——Redis缓存!超详细!

前言

!声明: 本文基于" Spring Boot整合缓存------声明式缓存注解的应用!超详细!"进行拓展。

1、环境目录

图1-1 项目目录

2、环境配置

JDK:17

IDEA:2025.1

Spring Boot:3.4.3


一、创建项目

在IDEA中创建 Spring Boot 项目 chapter06_RedisCache,大家可以根据自己当前情况选择使用 Spring Initializr 方式或者 Maven方式进行创建,在此选择使用 Maven 方式创建项目。


二、配置依赖

在项目 chapter06_RedisCache 的 pom.xml 文件中配置添加 Redis 的依赖,具体代码如下。

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.4.3</version>
        <relativePath/>
    </parent>
    <groupId>org.example</groupId>
    <artifactId>chapter06_RedisCache</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>chapter06_RedisCache</name>
    <description>chapter06_RedisCache</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

三、设置配置信息

在项目 chapter06_RedisCache的 application.yml 文件中添加 Redis缓存的相关配置,具体代码如下。

复制代码
spring:
  cache:
    type: redis
    redis:
      use-key-prefix: true
      key-prefix: "book_"
      cache-null-values: false

  data:
    redis:
      host: localhost
      port: 6379
      database: 3

  datasource:
      url: jdbc:mysql://localhost:3306/【数据库名】?characterEncoding=utf-8
      username: 【用户名】
      password: 【密码】
      driver-class-name: com.mysql.cj.jdbc.Driver

  jpa:
    show-sql: true

本案例不是对原始的Redis进行配置,而是需要将Redis作为缓存进行配置,需要注意的是,Redis 作为缓存使用的相关配置隶属于spring.cache.redis 节点。上述配置中,use-key-prefix用于指定是否开启key前缀;key-prefix用于指定key前缀;cache-null-values用于指定是否缓存空值;time-to-live用于指定缓存存活时间。


四、测试缓存效果

启动Redis服务,运行文件6-8后,在浏览器中访问http://localhost:8080/book/findById/1,

查询图书信息,控制台输出信息和浏览器中查询到的图书信息,如图1-2和图1-3所示。
图1-2 查询图书控制台输出信息(1)

从图 1-2 可以看出,控制台输出了一条查询语句,说明查询图书信息时发送对应的SQL到数据库进行查询。
图1-3 浏览器中查询到的图书信息(1)

从图1-3可以看出,浏览器中展示了id为1的图书信息,说明图书查询成功。

再次查询id为1的图书信息,控制台输出信息如图1-4所示。
图1-4 浏览器中查询到的图书信息(2)

从图1-4可以看出,控制台没有输出新的SQL信息,说明此时查询到的图书信息是从缓存中获取的,而没有查询数据库。

打开RESP.app,Redis中的数据如图1-5所示。
图1-5 Redis中的数据

从图1-5可以看出,Redis中存放了一个"book_"开头的键,该键对应的数据类型为String类型。由于Redis默认的序列化机制为JDK的序列化策略,所以存储的内容展示形式为二进制。


📢 互动时间

本文的代码和思路是否解决了你的问题?欢迎在评论区分享你的想法或疑问 !无论是更好的实现方式,还是遇到的其他问题,都可以详细描述,我会第一时间与你交流探讨。你的点赞/收藏是我持续创作的动力,技术无边界,让我们一起进步!🚀💬

相关推荐
lee_curry7 小时前
第四章 jvm中的垃圾回收器
java·jvm·垃圾收集器
QQ1__8115175157 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
小码哥_常8 小时前
解锁AI编程密码:程序员常用的10个AI提示词
后端
九转成圣8 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
直奔標竿8 小时前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
金銀銅鐵9 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
uzong10 小时前
我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误
后端
虹科网络安全10 小时前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(上)
数据库·redis·bootstrap
野生技术架构师11 小时前
金三银四面试总结篇,汇总 Java 面试突击班后的面试小册
java·面试·职场和发展