如何在Spring Boot中切换Lettuce与Jedis驱动_修改pom.xml依赖与连接池配置

梦磊同学_6424

梦磊同学_6424

2026-06-14

860人浏览

原创

spring boot 2.x 切换 jedis 需三步:排除 lettuce-core 依赖、引入 jedis 依赖、显式配置 jedisconnectionfactory bean;同时 application.yml 中连接池配置须用 spring.redis.jedis.pool.* 前缀,且参数名如 time-between-eviction-runs-millis 不可省略 -millis 后缀。

如何在spring boot中切换lettuce与jedis驱动_修改pom.xml依赖与连接池配置

Spring Boot 2.x 起默认用 Lettuce,想切回 Jedis 不是改个配置就行,必须显式排除默认依赖、引入 jedis、并重写连接工厂 —— 否则 RedisTemplate 仍会走 Lettuce 实现,甚至启动报 Cannot get Jedis connection。

排除 lettuce-core 并引入 jedis 依赖

Spring Boot 的 spring-boot-starter-data-redis 默认带 io.lettuce:lettuce-core,不手动排除就会冲突。Maven 必须做两件事:

  • 在 spring-boot-starter-data-redis 中用 <exclusions></exclusions> 去掉 lettuce-core
  • 单独添加 redis.clients:jedis(建议用 4.4.3 或更高,兼容 Spring Boot 3.x;若用 2.x,3.9.0 是较稳版本)

示例 pom.xml 片段:

<dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-data-redis</artifactid><exclusions><exclusion><groupid>io.lettuce</groupid><artifactid>lettuce-core</artifactid></exclusion></exclusions></dependency><dependency><groupid>redis.clients</groupid><artifactid>jedis</artifactid><version>4.4.3</version></dependency>

application.yml 中的连接池参数名完全不同

Jedis 和 Lettuce 的连接池配置项前缀不同,且部分参数语义不一致 —— 直接复用原有 spring.redis.lettuce.pool.* 配置会导致被忽略。

设计师AI工具箱
设计师AI工具箱

一款AI图像与设计工具,主要用于最懂设计师的效率提升平台,实现高效设计出图和智能改图,室内设计,毛坯渲染,旧房改造 ,软装设计,适合需要提升相关任务效率的用户。

下载
  • Jedis 使用 spring.redis.jedis.pool.*(Spring Boot 2.3+ 支持,旧版需靠 Java Config)
  • 关键参数映射:max-active → max-active(同名但含义一致),max-wait → max-wait,但 min-idle/max-idle 在 Jedis 中对应 JedisPoolConfig 的原生字段,YAML 中写法一样
  • 注意:time-between-eviction-runs 在 Jedis 中叫 time-between-eviction-runs-millis,少写 -millis 后缀会静默失效

正确 YAML 示例:

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password:
    timeout: 5000
    jedis:
      pool:
        max-active: 20
        max-idle: 10
        min-idle: 2
        max-wait: 2000
        time-between-eviction-runs-millis: 30000

必须重写 RedisConnectionFactory 才能生效

仅改依赖和 YAML 不够。Spring Boot 自动配置会尝试创建 LettuceConnectionFactory,而它找不到 lettuce-core 就会失败或 fallback 到空实现。你得提供一个 @Bean 显式返回 JedisConnectionFactory。

  • 构造时传入 JedisPoolConfig(可从 YAML 自动绑定,也可手写)和 RedisStandaloneConfiguration
  • 别漏掉 setUsePooling(true),否则即使配了 pool 参数也走单连接
  • 如果用了密码或 database,必须在 RedisStandaloneConfiguration 中设置,不能只靠 YAML 的 spring.redis.password

精简 Java Config 示例:

@Configuration
public class RedisConfig {
  @Bean
  public JedisConnectionFactory jedisConnectionFactory(RedisProperties properties) {
    RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
    config.setHostName(properties.getHost());
    config.setPort(properties.getPort());
    config.setPassword(RedisPassword.of(properties.getPassword()));
    config.setDatabase(properties.getDatabase());

    JedisClientConfiguration.JedisClientConfigurationBuilder builder =
        JedisClientConfiguration.builder();
    builder.usePooling();
    builder.poolConfig(jedisPoolConfig(properties.getJedis().getPool()));

    return new JedisConnectionFactory(config, builder.build());
  }

  private JedisPoolConfig jedisPoolConfig(RedisProperties.Pool pool) {
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(pool.getMaxActive());
    config.setMaxIdle(pool.getMaxIdle());
    config.setMinIdle(pool.getMinIdle());
    config.setMaxWaitMillis(pool.getMaxWait().toMillis());
    config.setTimeBetweenEvictionRunsMillis(
        pool.getTimeBetweenEvictionRuns().toMillis());
    return config;
  }
}

最常被跳过的点:没重写 JedisConnectionFactory Bean,或 YAML 里写了 lettuce.pool 却以为它对 Jedis 也起作用 —— 这两类错误都会导致运行时连接异常或连接池参数完全不生效。

驱动精灵
驱动精灵

驱动精灵基于驱动之家十余年的专业数据积累,驱动支持度高,已经为数亿用户解决了各种电脑驱动问题、系统故障,是目前有效的驱动软件,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2371

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

437

25

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.01

4244

5

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2024.08.01

5457

7

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2024.11.28

2362

7

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

80

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

80

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

60

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习