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

Spring Boot集成Redis缓存时无法为记录设置过期时间问题咨询

排查步骤

1. 确认存储操作的API体系

Spring Data Redis的TTL配置分为两套独立体系,混用会直接导致配置不生效:

  • @RedisHash、@TimeToLive注解仅对RedisRepository/CrudRepository系列接口的存储操作生效,如果你是直接用RedisTemplate、StringRedisTemplate调用方法存数据,这两个注解不会被解析,自然不会设置过期时间。
  • spring.cache.redis.time-to-live配置仅对**Spring Cache注解(@Cacheable/@CachePut/@CacheEvict)**的存储操作生效,如果你没有开启@EnableCaching注解、或者自定义了RedisCacheConfiguration覆盖了默认配置,配置文件的TTL参数会失效。

2. 排查常见操作失误

  • 确认查询的key是实际存入Redis的key:用RedisRepository存Hash类型数据时,默认会给key拼接@RedisHash的value值作为前缀,比如示例中GetPackages类如果没有指定@RedisHash的value,默认前缀是类名首字母小写,实际存储的key格式为getPackages:{实体类的id字段值},而非自定义的mykey,可先执行keys *确认实际存在的key再查TTL。
  • 确认@TimeToLive字段可被Spring读取:你用了@Data注解会自动生成getter/setter,如果你关闭了lombok的对应生成规则,需要手动给ttl字段添加public的getter方法,Spring读取不到ttl值会跳过过期设置。
  • 确认Redis服务端支持过期设置:手动在redis-cli执行EXPIRE 你的实际key 60,再执行TTL查询,如果返回值还是-1,说明Redis服务端禁用了EXPIRE命令,和Spring无关。
  • 确认没有自定义RedisCacheConfiguration覆盖默认配置:如果你用Spring Cache体系,手动写了Redis缓存配置类但没有调用entryTtl方法设置过期时间,配置文件中的spring.cache.redis.time-to-live会直接失效。

3. 通用解决方案

如果调整配置后依旧不生效,可直接在存储逻辑后手动添加过期时间设置,兼容性最高:

场景1:使用RedisTemplate存储

// 存储对象逻辑
redisTemplate.opsForValue().set("你的key", 你的对象);
// 手动设置过期时间,单位可自定义
redisTemplate.expire("你的key", 120, TimeUnit.SECONDS);

场景2:使用Spring Cache存储

添加自定义缓存配置类,强制指定TTL:

@Configuration
@EnableCaching
public class RedisCacheConfig {
    @Bean
    public RedisCacheConfiguration redisCacheConfiguration() {
        return RedisCacheConfiguration.defaultCacheConfig()
                // 全局过期时间,单位秒,可按需调整
                .entryTtl(Duration.ofSeconds(120))
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:36:07