2、Spring Boot 3 如何使用 Redis 数据库,以及 Redis 操作客户端选择

【SpringBoot3】Spring Boot 3.0 集成 Redis 缓存 Redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它主要用于作为数据库、缓存和消息中间件,以快速读写和丰富的数据结构支持而著称。在应用程序和数据库之间,Redis缓存作为一个中间层起着关键作用。通过将常用的数据存储在Redis内存中,可以快速读取,从而避免了从数据库进行复杂的查询操作,减轻了数据库服务器的压力,并提高了应用程序的性能和响应速度。 阅读详情

在 Spring Boot 3 项目中集成和使用 Redis 是后端开发中的常见需求。下面我将从 使用方式、客户端选择、区别对比、推荐方案 四个方面为你详细讲解。


一、Spring Boot 3 中如何使用 Redis?

1. 添加依赖(Maven)

Spring Boot 3 默认使用 Lettuce 作为 Redis 客户端,推荐使用 spring-boot-starter-data-redis。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- 可选:如果你使用 JSON 序列化 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

⚠️ 注意:Spring Boot 3 要求 Java 17+,且不再支持 Jedis 作为默认客户端(但仍可手动引入)。


2. 配置 application.yml

spring:
  redis:
    host: localhost
    port: 6379
    password: yourpassword  # 如果有
    database: 0
    timeout: 5s
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: -1ms  # 永久等待

3. 使用 RedisTemplate 或 StringRedisTemplate

✅ 推荐:注入 RedisTemplate 进行操作
@Service
public class UserService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void setUser(Long userId, User user) {
        redisTemplate.opsForValue().set("user:" + userId, user, Duration.ofMinutes(30));
    }

    public User getUser(Long userId) {
        return (User) redisTemplate.opsForValue().get("user:" + userId);
    }

    public void deleteCache(Long userId) {
        redisTemplate.delete("user:" + userId);
    }
}

🔍 提示:RedisTemplate 默认使用 JDK 序列化,存储的是二进制格式,不易读。建议自定义序列化方式。


4. 自定义序列化(推荐使用 JSON)

@Configuration
@EnableRedisRepositories
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);

        // 使用 Jackson2JsonRedisSerializer 序列化对象
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.activateDefaultTyping(LazyLoadingConfigurer.construct(om.getPolymorphicTypeValidator()), ObjectMapper.DefaultTyping.NON_FINAL);
        serializer.setObjectMapper(om);

        // 设置 Key 和 Value 的序列化方式
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(serializer);
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashValueSerializer(serializer);

        template.afterPropertiesSet();
        return template;
    }
}

这样存储的 Redis 数据是 可读的 JSON 格式,便于调试。


5. 使用 @Cacheable 注解(声明式缓存)

@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
    // 模拟数据库查询
    return userRepository.findById(id);
}

@CacheEvict(value = "users", key = "#id")
public void updateUser(User user) {
    userRepository.save(user);
}

需要开启缓存支持:

@SpringBootApplication
@EnableCaching
public class Application { ... }

二、Redis 操作客户端有哪些?区别是什么?

客户端简介特点适用场景
Lettuce基于 Netty 的高性能客户端,Spring Boot 2.x/3.x 默认线程安全、支持同步/异步/响应式、连接共享、资源消耗低✅ 推荐,尤其在 Spring Boot 项目中
Jedis老牌客户端,简单直接轻量、API 简单,但非线程安全(需连接池)适合简单项目或学习,不推荐在 Spring Boot 3 中作为主客户端
Redisson高级客户端,封装了分布式对象、锁、队列等提供分布式锁、分布式集合、延迟队列等高级功能复杂分布式场景(如分布式限流、分布式任务调度)

详细对比(Lettuce vs Jedis vs Redisson)

对比项LettuceJedisRedisson
线程安全✅ 是(单连接可多线程共享)❌ 否(每个线程需独立连接或使用连接池)✅ 是
连接模型基于 Netty,异步非阻塞同步阻塞 I/O基于 Netty,异步
资源消耗低(连接可共享)高(频繁创建连接)中等
功能丰富度基础操作 + Stream 等基础操作⭐⭐⭐⭐⭐(分布式对象、锁、服务等)
Spring Boot 支持✅ 官方默认集成⚠️ 需手动配置✅ 可集成,但非默认
学习成本低低中高
性能高(尤其高并发)高(但连接管理差)中等(功能多,有开销)

三、如何选择?推荐方案

✅ 推荐组合(Spring Boot 3 项目):

场景推荐客户端说明
普通缓存、数据存取Lettuce + RedisTemplateSpring Boot 默认,性能好,线程安全,易于集成
需要分布式锁、分布式集合、延迟队列Redisson提供 RLock、RBlockingQueue、RDelayedQueue 等高级功能
简单脚本或测试Jedis(仅学习)不推荐用于生产,除非遗留系统

🎯 推荐使用策略:

  1. 90% 场景:使用 Lettuce

    • 缓存、计数器、会话存储、简单消息队列(List/Stream)
    • 配合 RedisTemplate 或 StringRedisTemplate
  2. 10% 复杂场景:引入 Redisson

    • 分布式锁(Redlock)
    • 分布式限流(RateLimiter)
    • 延迟任务(RDelayedQueue)
    • 分布式集合(RList、RMap)

💡 可以同时引入 Lettuce 和 Redisson,各司其职。


四、Redisson 使用示例(分布式锁)

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.24.1</version>
</dependency>
@Autowired
private RedissonClient redissonClient;

public void deductStock() {
    RLock lock = redissonClient.getLock("stock:lock");
    try {
        if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
            // 执行扣库存逻辑
        }
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
    } finally {
        lock.unlock();
    }
}

五、总结:Spring Boot 3 中 Redis 使用建议

项目建议
客户端选择优先使用 Lettuce,复杂分布式功能用 Redisson
序列化使用 Jackson2JsonRedisSerializer,避免 JDK 序列化乱码
连接池Lettuce 默认支持连接池(通过 LettucePoolingConfiguration)
缓存注解使用 @Cacheable、@CacheEvict 简化代码
高可用配合 Redis 哨兵或集群使用,配置多个节点
监控可集成 Spring Boot Actuator + RedisHealthIndicator

下一步学习建议

你可以继续深入:

  • Redis 持久化(RDB/AOF)配置与原理
  • Redis 哨兵(Sentinel)和集群(Cluster)搭建
  • 缓存穿透、击穿、雪崩的解决方案(布隆过滤器、空值缓存、互斥锁)
  • Redis Stream 实现消息队列
  • Redis 与 Spring Cache 的深度整合
【Spring Boot 3】【Redis】集成Lettuce Spring Data Redis整合了Lettuce和Jedis两个流行的Redis客户端,本文介绍Lettuce客户端在Spring Boot应用开发中的使用。Spring Boot应用中引入自动生成Bean实例,用于创建对象;自动生成Bean实例作为Redis客户端,实际类型是。 阅读详情

相关推荐

Java21 + SpringBoot3整合Redis,使用Lettuce连接池,推荐连接池参数配置,封装Redis操作

近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。本文主要介绍在项目中如何整合Redis,JDK版本是Java21。Redis。

zzcoder的博客 4220

springboot3整合redis

来源于。

2301_77138117的博客 3897

Spring Boot 整合Redis

redis是一款开源的Key-Value数据库,运行在中,由C语言编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache 、memcached 等。

FanZaiYo的博客 2167

Java --- springboot3整合redis

​​​​​​​。

qq_46093575的博客 3988

Spring Boot 2.0 集成 Redis 3.2.1 缓存实践教程

本文还有配套的精品资源,点击获取 简介:本实例介绍如何在Spring Boot 2.0框架中集成Redis 3.2.1作为缓存系统。首先添加Spring Data Redis依赖,然后配置Redis连接信息,并利用Spring Boot自动配置的RedisTemplate和StringRedisTemplate操作Redis。通过具体代码示例,展示如何存储和读取字符串键值对...

weixin_42522857的博客 1486

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1939

Redis Java 集成到 Spring Boot

Redis Java 集成到 Spring Boot(基本练习)

明志の博客 1万+

华为Atlas 300I推理卡驱动安装避坑指南:不同安装方式的选择与优化

本文详细解析华为Atlas 300I推理卡驱动安装的三种主流方式(.run、.rpm和源码编译),提供关键环境检查步骤、安装流程优化建议及常见问题解决方案,帮助开发者高效完成芯片推理卡部署并规避典型安装陷阱。

q9w8e7r6t5的博客 431

Spring Boot3整合Redis

⛰️个人主页: 蒾酒🔥系列专栏:《spring boot实战》目录前置条件1.导依赖2.配置连接信息以及连接池参数3.配置序列化方式4.编写测试已经初始化好一个spring boot项目且版本为3X,项目可正常启动。作者版本为3.2.2初始化教程:新版idea(2023)创建spring boot3项目-优快云博客https://blog.youkuaiyun.com/qq_62262918/article/details/135785412?spm=1001.2014.3001.5501pom.xml:

蒾酒的博客 9147

Microsoft Bitlocker企业级管理部署方案

BitLocker是Windows 10以及更高版本中内置的磁盘加密工具,是一种可靠的数据保护机制,可以保护计算机上的敏感数据不被未经授权的人访问。BitLocker的工作原理是将整个系统卷或其他数据卷加密的同时,向某个可信软件或硬件模块请求密钥解密数据。BitLocker最大的好处在于其内置于Windows系统,所以用户无需安装其他软件或购买额外的许可证或硬件设备。本文将介绍Microsoft BitLocker企业级管理部署方案,包括:BitLocker部署前的准备工作。

xueyunshengling的博客 2073

Python 爬虫实战:淘宝直播间实时数据抓取(弹幕分析 + 流量监控)

随着电商直播的迅猛发展,淘宝直播已成为品牌推广和商品销售的重要阵地。通过爬取淘宝直播间的实时数据,包括弹幕互动和流量信息,可以帮助商家深入了解用户行为、优化直播策略,同时为市场分析和商业决策提供数据支持。本文将深入探讨如何利用 Python 爬虫技术实现对淘宝直播间实时数据的抓取,并进行弹幕分析和流量监控。

u014481728的博客 729

从入门到精通【Redis】如何在Java中使用Redis以及将Redis集成到Spring Boot

本篇文章给大家介绍redis在Java中的简单实用,可以快速上手。

双吉堡工程专业的一名27届Javaer。 1350

YOLOv13改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 90

Spring Boot如何集成Redis

本文介绍了在Spring Boot项目中集成Redis的详细步骤。首先说明开发环境要求(IDEA 2026.1、JDK 17等),然后演示如何创建Spring Boot项目并选择相关配置。重点内容包括:引入Redis依赖和连接池依赖,配置Maven项目文件;修改YAML配置文件设置Redis连接参数;创建RedisConfig配置类解决序列化问题,通过@Bean注解配置RedisTemplate,使用GenericJackson2JsonRedisSerializer实现键值对的序列化。文中配有详细截图和代

城南蝈蝈 1436

037、有源钳位反激变换器(ACF)原理

文章摘要 有源钳位反激变换器(ACF)是一种克服常规反激电路漏感能量处理瓶颈的高效解决方案。文章从实际炸机案例切入,指出RCD钳位电路在高压、宽范围、高功率场景下的局限性。ACF通过增加钳位管和钳位电容,将漏感能量回收而非消耗,实现效率提升2-3%、精准电压钳位和更好EMI性能。文章详细解析了ACF四阶段工作过程、关键波形特征,并指出设计陷阱:漏感需保持1%-3%特定范围、钳位电容ESR要求严格、需专用控制IC支持互补驱动。最后给出实用调试建议,强调ACF适用于65W+功率场景,低压验证后再逐步升压的调试方

Jack010169的博客 253

解锁RK3588多屏异显:MIPI+HDMI+EDP混合输出全攻略

本文详细介绍了RK3588处理器在MIPI+HDMI+EDP混合输出配置中的技术实现与应用。作为一款高性能处理器,RK3588凭借其强大的图形处理能力,支持多屏异显功能,可满足智能安防、工业控制等领域的多屏显示需求。文章从硬件连接、设备树配置、内核驱动设置到显示参数调整,系统阐述了配置流程,并针对信号不稳定、显示模式不匹配等常见问题提供了解决方案。通过智能安防监控案例,展示了该技术在提高监控效率方面的实际应用价值。随着技术进步,RK3588多屏异显技术将在更多领域发挥重要作用,为开发者提供灵活多样的显示方案

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2431

Spring Boot 2.3.0 Redis拓扑动态感应,使用Lettuce拓扑刷新

背景 关于 Redis 在生产中我们一般情况下都会选择 redis cluster 高可用架构部署,既能保证数据分片并且实现节点的故障自动转移。 基本部署拓扑如下: 创建测试集群 这里通过我封装的 pig4cloud/redis-cluster:4.0 镜像,即可构建一个 6 个节点的 redis cluster 测试环境。 docker run --name redis-cluster -d -e CLUSTER_ANNOUNCE_IP=宿主机IP \ -p 7000-700...

zzhongcy的专栏 1万+

在iPad上使用Python进行编程

如果你拥有一台iPad,并且想在上面编写和运行Python代码,你会发现iPad提供了一些适用的工具和应用程序来满足你的需求。安装一个Python解释器应用程序,编写和运行Python代码,使用第三方库和模块,以及存储和共享代码,这些步骤将帮助你在iPad上进行Python编程。要在iPad上运行Python代码,首先需要安装一个Python解释器。这些应用程序提供了一个交互式的开发环境,允许你编写、编辑和运行Python代码。一旦你安装了Python解释器应用程序,你可以开始编写Python代码了。

2301_79366435的博客 4624

Spring Boot 3.5 Redis:url下database被静默忽略

Boot 3.5 起配了 spring.data.redis.url,库号只认 URL path,无 path 默认 0,database 属性静默忽略;附复现、排障与迁移清单。

Amax3747的博客 476

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

使用Spring Boot集成Redis缓存

通过本文,您已经了解了如何在Spring Boot中集成Redis并进行基本的缓存操作。Redis缓存不仅可以提升应用的性能,还能减少对数据库的压力,是一个非常实用的工具。在实际项目中,根据业务需求合理配置和使用Redis,将会为您带来显著的性能提升。

上进!努力!!! 3436

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring Boot 与 Redis 6.0 集成

Spring Boot 与 Redis 6.0 的集成是构建高性能、可扩展应用的重要组成部分。通过本文的介绍,你应该对 Spring Boot 与 Redis 6.0 的集成方法和最佳实践有了更深入的了解。Redis 6.0 的新特性为我们提供了更强大的功能和更好的性能,通过合理使用这些特性,我们可以构建更高效、更可靠的应用。这其实可以更优雅一点,你觉得呢?欢迎在评论区分享你的想法和经验!

alex_goden的博客 4156

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置

目录 一、Redis简介 1.1 数据结构的操作 1.2 重要概念分析 二、Redis客户端 2.1 简介 2.2 连接 2.3 基本用法 2.4 同步与异步 2.5 消费RedisFuture<T> 2.6 使用消费者监听器 2.7 发布订阅(Pub/Sub...

chifu9074的博客 1342

Spring Boot 中使用 Redis:从入门到实战

在现代的 Spring Boot 应用程序中,Redis 是一种常用的高性能键值存储系统,广泛用于缓存、消息队列、分布式锁等场景。本文将详细介绍如何在 Spring Boot 项目中集成 Redis,并实现基本的增删改查操作、设置数据过期时间、创建临时数据等常用功能。

interest_ing_的博客 1375

Spring Boot | Spring Boot“整合Redis“

目录: 1. Redis 介绍 2. Redis 下载安装 3. Redis “服务开启”和“连接配置” 4. Spring Boot整合Redis的“前期准备” : ① 编写实体类 ② 编写Repository 接口 ③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) .....

m0_70720417的博客 1577

spring boot 2.0.3使用Lettuce Redis并配置 pool

依赖的jar包: &amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;groupId&amp;amp;amp;gt;org.springframework.boot&amp;amp;amp;lt;/groupId&amp;amp;amp;gt; &amp;amp;amp;lt;artifactId&amp;am

严老板的技术梦想博客 1万+

Spring Boot 3 快速实现 Spring Data Redis 集成与自定义序列化配置

本文介绍了Spring Data Redis的核心优势及其在Spring Boot 3中的集成方式,重点解决了Redis存储中的序列化问题。文章首先概述了Spring Data Redis的客户端整合、统一API等特性,然后详细讲解了如何配置和使用RedisTemplate。针对序列化乱码问题,提出了自定义JSON序列化方案,并通过对比展示了优化效果。最后探讨了类名冗余问题的解决方案,推荐使用StringRedisTemplate手动序列化以优化存储空间。全文提供了完整的代码示例,帮助开发者在实际项目中实现

weixin_45919016的博客 1540
上一篇: 4、redisson-spring-boot-starter 的介绍和与 Spring Boot 集成使用
下一篇: PostgreSQL 常用 SELECT 数据查询命令示例
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值