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

Spring Boot集成Redis缓存数据无法存入问题求助

排查Spring Cache+Redis缓存不生效的方案

针对你遇到的问题——Spring Boot 2.4.1中@Cacheable方法执行了缓存存储逻辑但Redis无对应键,可按以下步骤排查:

1. 确认Redis中键的实际格式

Spring Cache默认会给缓存键加上缓存名前缀,格式为缓存名::key,比如你的场景下实际键应该是myCache::fixed,而非直接的fixed。

  • 用redis-cli连接目标Redis实例,执行KEYS "myCache::*"或KEYS "*fixed*"查找对应键,避免因为键格式判断错误导致误以为没生成缓存。

2. 检查Redis序列化配置

默认的JdkSerializationRedisSerializer会将键序列化为字节数组,在Redis客户端中显示为乱码,导致你看不到正常的键名;或者值序列化失败未触发报错。

  • 确认是否配置了正确的序列化规则,比如用StringRedisSerializer处理键,Jackson2JsonRedisSerializer处理值:
@Bean
public RedisCacheConfiguration redisCacheConfiguration() {
    return RedisCacheConfiguration.defaultCacheConfig()
            .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
            .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new Jackson2JsonRedisSerializer<>(Object.class)));
}

3. 验证Redis连接与实例正确性

检查application.yml/application.properties中的Redis配置是否指向正确的实例:

  • 确认spring.redis.host、spring.redis.port、spring.redis.database、spring.redis.password配置无误,是否连接到了预期的Redis实例(比如是否误连测试环境或其他库)。
  • 可以通过redis-cli -h 主机 -p 端口 -a 密码 select 库号切换到对应库,再执行键查询。

4. 检查方法返回值是否被过滤

@Cacheable默认不缓存null值,如果authorizationFeignClient.isAuthorized(request)返回null,则不会在Redis中生成缓存键。

  • 调试或打印返回值,确认是否为null;如果需要缓存null值,可添加unless="#result == null"属性:
@Cacheable(value = "myCache", key = "'fixed'", unless = "#result == null")

5. 排查Redis缓存管理器配置

如果自定义了RedisCacheManager,需确认是否存在禁用缓存、过期时间设为0或针对myCache的特殊限制:

  • 检查缓存管理器是否开启了缓存,是否为myCache设置了不合理的过期策略(比如过期时间为0会导致键立即被删除)。

6. 查看Redis底层操作日志

将org.springframework.data.redis的日志级别设为TRACE,查看RedisTemplate执行存储操作的细节:

  • 确认是否有SET命令执行,是否存在序列化异常、连接异常等被吞掉的错误;同时查看Redis服务端日志,确认是否收到存储请求,是否因内存不足、淘汰策略等导致键被删除。

7. 确认AOP代理规则是否被遵守

虽然你调试确认了缓存存储代码执行,但仍需排查是否为类内部调用(即this.isAuthorized(request)):

  • Spring Cache基于AOP实现,类内部调用不会触发代理逻辑,需确保通过注入的Bean实例调用该方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:55:34