使用 stringredistemplate.opsforvalue().set(key, value, duration) 写入值和有效期。每个键都可以传入自己的时长,适合区分短期和长期缓存。

为不同键写入不同的时长
示例需要 Spring Boot 3 的 Redis Starter 和可访问的测试 Redis。将组件放在应用扫描范围内。
import java.time.Duration;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
@Component
class DemoCache {
private final StringRedisTemplate redis;
DemoCache(StringRedisTemplate redis) {
this.redis = redis;
}
void seed() {
redis.opsForValue().set("demo:summary", "summary", Duration.ofSeconds(30));
redis.opsForValue().set("demo:catalog", "catalog", Duration.ofMinutes(5));
}
String read(String key) {
return redis.opsForValue().get(key);
}
}
示例只写无敏感性的测试值。读到 null 时按缓存未命中处理。
用 TTL 核对两个键
调用 seed 后,在同一 Redis 实例和数据库执行。
redis-cli TTL demo:summary redis-cli TTL demo:catalog
正常应分别看到不超过 30 和 300 的剩余秒数。-1 表示键存在但无过期时间,-2 表示键不存在。
检查覆盖写入后的有效期
在测试环境等待短期键过期后重新检查。
redis-cli GET demo:summary redis-cli TTL demo:catalog
第一个键到期后应返回 nil。如果后续调用 set 覆盖已有值,仍应传入业务要求的 TTL。


















