赞
踩
目录
这个报错问题主要先看你的application.properties文件当中的配置redis是否正确,我的是这样的,
- # Redis服务器配置
- spring.data.redis.host=127.0.0.1
- spring.data.redis.port=6379
- spring.data.redis.password=111111(没有设置密码就不要这段就行)
-
- # Redis连接池配置
- spring.redis.pool.max-active=8
- spring.redis.pool.max-wait=-1
- spring.redis.pool.max-idle=8
- spring.redis.pool.min-idle=0
- spring.data.redis.timeout=30000
如果你的Redis连接池配置在application.properties
文件中应该是正确的。但是,由于您仍然遇到了Redis连接问题,可能还有其他原因导致了这个错误。
首先,确保Redis服务器正常运行并且可以从您的应用程序所在的主机访问。您可以使用以下命令来测试Redis服务器是否正常运行。
使用命令:
redis-cli ping
如果Redis服务器没有运行,请确保启动它。
接下来,请检查应用程序代码,特别是与Redis相关的部分,确保没有发送不正确的Redis命令。确保使用的Redis客户端库版本与您的应用程序和Redis服务器兼容。
如果问题仍然存在,您可以尝试切换到使用Lettuce作为Redis客户端,因为它是Spring Boot 2.x 默认支持的Redis客户端。以下是如何在pom.xml
中添加Lettuce依赖的示例:
- <dependency>
- <groupId>io.lettuce</groupId>
- <artifactId>lettuce-core</artifactId>
- </dependency>
您可以将Redis连接工厂配置修改为适用于Lettuce的方式:
RedisConfig.java
- import java.time.Duration;
-
- /**
- * Redis 配置类
- */
- @Configuration
- @EnableCaching
- public class RedisConfig {
-
- @Bean
- public RedisConnectionFactory redisConnectionFactory() {
- LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
- lettuceConnectionFactory.setHostName("127.0.0.1");
- lettuceConnectionFactory.setPort(6379);
- lettuceConnectionFactory.setPassword("111111");
-
- System.out.println("Redis 连接工厂:" + lettuceConnectionFactory.toString());
- return lettuceConnectionFactory;
- }
将使用Lettuce作为Redis客户端,并且不再依赖于Jedis。在切换到Lettuce后,再次运行您的应用程序,看看是否仍然遇到相同的问题.
完整的RedisConfig配置
- package com.tscabinet.config;
-
- import org.springframework.cache.CacheManager;
- import org.springframework.cache.annotation.EnableCaching;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.cache.RedisCacheConfiguration;
- import org.springframework.data.redis.cache.RedisCacheManager;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
- import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
- import org.springframework.data.redis.serializer.*;
- import redis.clients.jedis.JedisPoolConfig;
-
- import java.time.Duration;
-
- /**
- * Redis 配置类
- */
- @Configuration
- @EnableCaching
- public class RedisConfig {
-
- @Bean
- public RedisConnectionFactory redisConnectionFactory() {
- LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
- lettuceConnectionFactory.setHostName("127.0.0.1");
- lettuceConnectionFactory.setPort(6379);
- lettuceConnectionFactory.setPassword("111111");
-
- System.out.println("Redis 连接工厂:" + lettuceConnectionFactory.toString());
- return lettuceConnectionFactory;
- }
-
-
- /**
- * 配置缓存管理器
- * @param factory Redis 线程安全连接工厂
- * @return 缓存管理器
- */
- @Bean
- public CacheManager cacheManager(RedisConnectionFactory factory) {
- // 生成两套默认配置,通过 Config 对象即可对缓存进行自定义配置
- RedisCacheConfiguration cacheConfig1 = RedisCacheConfiguration.defaultCacheConfig()
- // 设置过期时间 10 分钟
- .entryTtl(Duration.ofMinutes(10))
- // 设置缓存前缀
- .computePrefixWith(cacheName -> "cache:user:" + cacheName + ":")
- // 禁止缓存 null 值
- .disableCachingNullValues()
- // 设置 key 序列化
- .serializeKeysWith(keyPair())
- // 设置 value 序列化
- .serializeValuesWith(valuePair());
-
- RedisCacheConfiguration cacheConfig2 = RedisCacheConfiguration.defaultCacheConfig()
- // 设置过期时间 30 秒
- .entryTtl(Duration.ofSeconds(30))
- .computePrefixWith(cacheName -> "cache:admin:" + cacheName + ":")
- .disableCachingNullValues()
- .serializeKeysWith(keyPair())
- .serializeValuesWith(valuePair());
-
- RedisCacheConfiguration cacheConfig3 = RedisCacheConfiguration.defaultCacheConfig()
- // 设置过期时间 30 秒
- .entryTtl(Duration.ZERO)
- .computePrefixWith(cacheName -> "cache:NoTime:" + cacheName + ":")
- .disableCachingNullValues()
- .serializeKeysWith(keyPair())
- .serializeValuesWith(valuePair());
-
- // 返回 Redis 缓存管理器
- return RedisCacheManager.builder(factory)
- .withCacheConfiguration("user", cacheConfig1)
- .withCacheConfiguration("admin", cacheConfig2)
- .withCacheConfiguration("NoTime", cacheConfig3)
- .build();
- }
-
- /**
- * 配置键序列化
- * @return StringRedisSerializer
- */
- private RedisSerializationContext.SerializationPair<String> keyPair() {
- return RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer());
- }
-
- /**
- * 配置值序列化,使用 GenericJackson2JsonRedisSerializer 替换默认序列化
- * @return GenericJackson2JsonRedisSerializer
- */
- private RedisSerializationContext.SerializationPair<Object> valuePair() {
- return RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer());
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。