后端开发必看!Spring Boot 3 连接 Redis 的三种客户端!
mhr18 2025-07-24 19:57 8 浏览 0 评论
最近和不少在互联网大厂做后端开发的朋友聊天,发现大家在使用 Spring Boot 3 连接 Redis 时,总会遇到各种各样的问题。有的说项目上线后 Redis 连接频繁超时,有的吐槽性能不如预期,还有人因为客户端选择不当导致系统稳定性出问题。其实,这些问题很大程度上和没有选对 Spring Boot 3 连接 Redis 的客户端有关!今天就来和大家聊聊 Spring Boot 3 中连接 Redis 的三种客户端,帮你彻底解决这些困扰。
背景介绍
随着互联网业务的快速发展,数据缓存、高并发读写需求越来越普遍,Redis 凭借其高性能、丰富的数据结构,成为后端开发中不可或缺的组件。而 Spring Boot 作为 Java 后端开发的热门框架,其与 Redis 的集成也在不断升级。到了 Spring Boot 3 版本,官方支持了 Jedis、Lettuce、Redisson 三种主流客户端,每种客户端都有其独特的特性和适用场景。
Jedis 是 Redis 的老牌 Java 客户端,它的 API 设计和 Redis 命令基本保持一致,使用起来非常直观,开发者可以轻松上手。但是,Jedis 基于阻塞 I/O,在高并发场景下可能会出现性能瓶颈。
Lettuce 则是基于 Netty 框架实现的异步、事件驱动的 Redis 客户端。它采用非阻塞 I/O,支持异步操作,能够很好地应对高并发场景,并且线程安全,多个线程可以共享一个连接实例,在资源利用上更加高效,也是 Spring Boot 3 默认使用的 Redis 客户端。
Redisson 与前两者不同,它不仅仅是一个 Redis 客户端,更是一个在 Redis 基础上实现的 Java 驻内存数据网格客户端。Redisson 提供了分布式锁、分布式集合、分布式对象等丰富的高级功能,极大地简化了分布式系统的开发。
Jedis 客户端
如果你的项目并发量不高,对分布式功能需求较少,且更倾向于使用传统、简单直接的 API,那么 Jedis 是个不错的选择。在 Spring Boot 3 项目中使用 Jedis,首先需要在pom.xml中添加依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
然后在配置文件application.yml中配置 Redis 连接信息:
spring:
redis:
host: localhost
port: 6379
jedis:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
在代码中,通过JedisConnectionFactory获取连接进行操作:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
Lettuce 客户端
当你的项目面临高并发场景,需要高效的异步操作时,Lettuce 无疑是最佳选择。在pom.xml中添加 Lettuce 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml配置与 Jedis 类似:
spring:
redis:
host: localhost
port: 6379
lettuce:
pool:
max-active: 8
max-wait: -1ms
max-idle: 8
min-idle: 0
Spring Boot 3 默认会自动配置 Lettuce 连接工厂和 RedisTemplate,无需过多手动配置,直接注入RedisTemplate即可使用:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RedisController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@GetMapping("/redis")
public String redisTest() {
redisTemplate.opsForValue().set("key", "value");
return redisTemplate.opsForValue().get("key").toString();
}
}
Redisson 客户端
如果你的项目需要使用 Redis 的高级分布式功能,比如分布式锁、分布式缓存等,Redisson 绝对能让你事半功倍。添加 Redisson 依赖:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.16.1</version>
</dependency>
在application.yml中配置 Redis 连接信息:
spring:
redis:
host: localhost
port: 6379
Redisson 的配置更加简单,通过RedissonClient即可操作 Redis,以下是使用 Redisson 实现分布式锁的示例:
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
@RestController
public class RedissonController {
@Autowired
private RedissonClient redissonClient;
@GetMapping("/lock")
public String lockTest() {
RLock lock = redissonClient.getLock("myLock");
try {
// 尝试加锁,最多等待100秒,上锁以后10秒自动解锁
boolean isLocked = lock.tryLock(100, 10, TimeUnit.SECONDS);
if (isLocked) {
// 执行业务逻辑
return "获取锁成功,执行业务逻辑";
} else {
return "获取锁失败";
}
} catch (InterruptedException e) {
e.printStackTrace();
return "加锁过程中发生异常";
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
}
总结
在 Spring Boot 3 项目中连接 Redis,选择合适的客户端至关重要。如果你追求简单易用,Jedis 是首选;面对高并发场景,Lettuce 能为你保驾护航;而需要高级分布式功能时,Redisson 则是最佳伙伴。
希望今天的分享能帮助大家解决 Redis 连接的难题!如果你在实际开发中遇到其他问题,或者有更好的实践经验,欢迎在评论区留言交流。觉得文章有用的话,别忘了点赞、收藏和转发,让更多后端开发的小伙伴少踩坑!
相关推荐
- 软考架构师-案例分析之Redis(软考架构师真题)
-
软考架构师考试中,Redis的知识考了很多回,从最近几年来看,案例分析经常考,有的时候单独考,有的时候和其他知识点一起考。Redis过往的考试中,考过的知识如下:1、Redis特点,涉及数据类型、持久...
- 揭秘:视频播放网站如何精准记录用户观看进度
-
在互联网蓬勃发展的当下,视频内容已毫无争议地成为人们获取信息、享受娱乐休闲时光的核心方式。据权威数据统计,全球每天有数十亿小时的视频被观看,视频流量在网络总流量中的占比逐年攀升,预计在未来几年内将超过...
- 量子级一致性!Flink+Redis全局状态管理
-
百万级实时计算任务如何实现亚毫秒级状态访问?本文揭秘Flink+Redis的量子纠缠态状态管理方案,将状态延迟降至0.3ms。引子:实时风控系统的量子跃迁//传统Flink状态管理(基于RocksD...
- 在 Mac 上运行 Redis 的 Docker 容器
-
在Mac上运行Redis的Docker容器,你可以按以下步骤操作,非常简单高效:一、前提要求已安装DockerDesktopforMac可通过终端验证Docker是否可用:d...
- 从 0 到 1:使用 Nginx + Lua 打造高性能 Web 网关
-
在大规模分布式架构中,Web网关扮演着重要角色,负责请求转发、负载均衡、限流、认证等功能。而Nginx+Lua结合可以提供:o高性能:Nginx是目前最流行的高性能Web服务器o动...
- 外贸独立站缓存设置黑科技:用错Redis比没缓存更致命
-
上周帮一个杭州卖家排查网站崩溃问题,发现这老铁把Redis缓存设置成128MB还开着持久化,服务器内存直接炸得比春节红包还彻底——"你这哪是缓存啊,根本是DDoS攻击自己!"最近Clo...
- Spring Boot3 整合 Redis,这些缓存注解你真的会用吗?
-
你在开发SpringBoot3项目时,有没有遇到过这样的困扰?随着项目功能不断增加,数据量逐渐庞大,接口响应速度变得越来越慢,用户体验直线下降。好不容易找到优化方向——引入Redis缓存...
- MySQL处理并发访问和高负载的关键技术和策略
-
MySQL处理并发访问和高负载的关键技术和策略主要包括以下几个方面:一、硬件优化1.CPU:提升CPU处理能力可以明显改善并发处理性能。根据数据库负载,考虑使用更多的CPU核心。2.内存:增加内存可以...
- druid解决高并发的数据库(druid多数据源配置 spring boot)
-
处理高并发的时候可以解决我们java一个核心问题java核心问题就是并发问题解决并发一个是redis一个是线程池的方式现在出来是个druid好像现在解决高并发的方式进行更换数据库的方式操作场景插入频繁...
- 高并发方案最全详解(8大常见方案)
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen睿哥。高并发是大型架构的核心,下面我重点来详解常见8大高并发方案@mikechen文章来源:mikechen.cc分...
- MySQL如何处理并发访问和高负载?(mysql如何处理并发访问和高负载访问)
-
MySQL在处理并发访问和高负载方面,采取了一系列关键技术和策略,以确保数据库系统在面对不断增长的并发需求时维持高效和稳定的性能。以下是对这些技术和策略的详细阐述,旨在全面解析MySQL如何处理并发访...
- Redis高可用集群详解(redis高可用方案以及优缺点)
-
Redis集群与哨兵架构对比Redis哨兵架构在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具监控master节点状态,如果master节点异常,则会做主从切换,将某一台sla...
- MCP协议重大升级!Spring AI联合阿里Higress,性能提升300%
-
引言:一场颠覆AI通信的技术革命2025年3月,MCP(ModelContextProtocol)协议迎来里程碑式升级——StreamableHTTP正式取代HTTP+SSE成为默认传输层。这一...
- 阿里三面被挂,幸获内推,历经5轮终于拿到口碑offer
-
作者:Java程序猿阿谷来源:https://www.jianshu.com/p/1c8271f03aa5每一个互联网人心中都有一个大厂梦,百度、阿里巴巴、腾讯是很多互联网人梦寐以求的地方,而我也不例...
- 来瞧瞧阿里一面都面些什么(笔试+机试)
-
絮叨说实话,能有机会面一下阿里对我来说帮助确实有蛮多,至少让我知道了自己的不足在哪,都说面试造火箭,上班拧螺丝。但就算是如此,为了生存,你也只有不停的学习,唯有光头,才能更强。哈哈起因2月28日在Bo...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (83)
- php redis (97)
- redis 存储 (67)
- redis 锁 (74)
- 启动 redis (73)
- redis 时间 (60)
- redis 删除 (69)
- redis内存 (64)
- redis并发 (53)
- redis 主从 (71)
- redis同步 (53)
- redis结构 (53)
- redis 订阅 (54)
- redis 登录 (62)
- redis 面试 (58)
- redis问题 (54)
- 阿里 redis (67)
- redis的缓存 (57)
- lua redis (59)
- redis 连接池 (61)