spring-boot导入redis依赖后报错 Error creating bean with name ‘redisConnectionFactory‘

本文解决Spring Boot集成Redis时出现的'redisConnectionFactory'创建失败错误,介绍如何正确配置Lettuce连接池并添加commons-pool2依赖,对比Lettuce与Jedis的连接方式及线程安全性。
部署运行你感兴趣的模型镜像

 spring-boot导入redis依赖后报错

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

报错信息: 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisConnectionFactory' defined in class path resource [org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory]: Factory method 'redisConnectionFactory' threw exception;

需要依赖commons-pool2

 <dependency>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-pool2</artifactId>
 </dependency>

以下复制自知乎:

Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server。

Jedis在实现上是直接连接的redis server,如果在多线程环境下是非线程安全的,这个时候只有使用连接池,为每个Jedis实例增加物理连接

Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问,应为StatefulRedisConnection是线程安全的,所以一个连接实例(StatefulRedisConnection)就可以满足多线程环境下的并发访问,当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。

作者:Vito
链接:https://www.zhihu.com/question/53124685/answer/354431529
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

参照资料:https://www.cnblogs.com/verlout/p/10618019.html

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

Spring Cloud 整合 Redis 的过程中,出现 `Error creating bean with name 'redisConverter': Unsatisfied dependency expressed through constructor parameter` 错误通常与依赖注入失败有关,具体表现为 Spring 无法在容器中找到合适的 Bean 来满足构造函数参数的需求。此类问题常见于 Redis 配置不完整、依赖项缺失或 Bean 作用域配置不当。 ### 常见原因与解决方案 #### 1. **RedisConnectionFactory 未正确注入** `redisConverter` 的构造函数通常依赖 `RedisConnectionFactory`,如果该 Bean 未正确注入,Spring 会抛出依赖注入失败的异常。确保在配置类中正确注入并使用了 `RedisConnectionFactory`。 ```java @Configuration public class RedisConfig { @Bean public RedisConverter redisConverter(RedisConnectionFactory redisConnectionFactory) { return new RedisConverter(redisConnectionFactory); } } ``` 如果 `RedisConnectionFactory` 没有被 Spring 容器管理,或者未正确配置 Redis 连接信息(如 host、port),则会触发此错误。确保 `application.yml` 或 `application.properties` 中的 Redis 配置正确: ```yaml spring: redis: host: localhost port: 6379 lettuce: pool: max-active: 8 max-idle: 4 ``` #### 2. **Redis 服务未启动或连接失败** 若 Redis 服务未启动或连接超时,Spring 无法建立 Redis 连接,进而导致 `RedisConnectionFactory` 初始化失败。检查 Redis 服务是否运行正常,可使用如下命令测试连接: ```bash redis-cli ping ``` 若返回 `PONG` 表示服务正常。否则需启动 Redis 服务或检查网络配置。 #### 3. **Bean 名称或类型冲突** 若存在多个 `RedisConnectionFactory` 实现或 Bean 名称冲突,Spring 无法确定使用哪一个 Bean,导致注入失败。可以通过指定 `@Primary` 注解明确主 Bean: ```java @Bean @Primary public RedisConnectionFactory redisConnectionFactory() { return new LettuceConnectionFactory(new RedisStandaloneConfiguration("localhost", 6379)); } ``` #### 4. **缺少必要的依赖库** 确保项目中已正确引入 Spring Data Redis 和 Lettuce(或 Jedis)客户端依赖。例如,在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>io.lettuce.core</groupId> <artifactId>lettuce-core</artifactId> <version>6.1.5</version> </dependency> ``` #### 5. **自定义配置类未被扫描到** 确保 Redis 配置类位于 Spring Boot 主类的子包下,或通过 `@ComponentScan` 显式指定扫描路径,否则配置类可能未被加载。 ```java @SpringBootApplication @ComponentScan(basePackages = {"com.example.config", "com.example.service"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值