You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot 2.7.5集成Redis无法存数据且无报错,求技术支持

SpringBoot 2.7.5集成Redis无法存储键值对排查方案

以下是针对该问题的具体排查步骤:

1. 确认Redis服务状态

  • 执行命令 redis-cli ping,若返回PONG则Redis服务正常;若超时或无响应,检查Redis是否启动、端口6379是否被占用、本地防火墙是否拦截Redis端口。
  • 用redis-cli登录后执行keys *,确认Redis本身是否能正常存储键值对,排除服务端异常。

2. 检查依赖配置

  • 当前同时引入spring-boot-starter-data-redis和jedis,但该starter默认使用lettuce作为客户端,手动引入jedis可能导致版本冲突,建议修改依赖:
    <!-- 排除默认的lettuce,引入jedis -->
    <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>
    </dependency>
    
  • 排查项目中是否存在其他缓存依赖(如ehcache),这类依赖可能覆盖Redis缓存配置,导致实际未使用Redis作为缓存介质。

3. 验证配置类正确性

  • 确认配置类添加了@Configuration注解,且RedisTemplate/StringRedisTemplate的Bean方法添加了@Bean注解,确保被Spring容器正确管理。
  • 若自定义了序列化配置,检查是否存在序列化失败的情况(比如对象未实现Serializable接口,或Jackson序列化配置错误),这类问题可能无显性异常但无法存储数据。
  • 优先使用StringRedisTemplate测试,它默认使用字符串序列化,可避免因序列化规则导致的隐形问题。

4. 测试代码有效性

  • 编写简单的单元测试直接操作Redis,排除业务代码的干扰:
    @SpringBootTest
    public class RedisTest {
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
    
        @Test
        public void testRedisOperation() {
            // 存储键值对
            stringRedisTemplate.opsForValue().set("test_key", "test_value");
            // 获取值并打印
            String value = stringRedisTemplate.opsForValue().get("test_key");
            System.out.println("Redis存储的值:" + value);
        }
    }
    
  • 若使用Spring Cache注解(如@Cacheable),需确认:
    • 启动类添加了@EnableCaching注解;
    • 被缓存的方法是被Spring代理的(不能在同一个类内部调用);
    • 缓存的键生成规则是否符合预期,避免键名异常导致无法查询到数据。

5. 补充配置细节与日志排查

  • 检查配置文件是否遗漏必要项:若Redis设置了密码,需添加spring.redis.password;若使用非默认数据库,添加spring.redis.database(默认值为0)。
  • 开启Redis相关DEBUG日志,查看隐藏的异常信息:
    logging.level.org.springframework.data.redis=DEBUG
    logging.level.redis.clients.jedis=DEBUG
    
    通过日志确认Redis连接是否成功、操作是否被执行、是否有序列化或连接相关的隐性异常。

内容的提问来源于stack exchange,提问作者sam98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:53:23