public void setAliToken(String token) {
String key = RedisKeyPrefix.MAN_MACHINE_ALI_TOKEN;
redisTemplate.expire(key, 10, TimeUnit.MINUTES);
redisTemplate.opsForValue().set(key,token);
}
在你的代码示例中,设置 Redis 中键的过期时间与设置键的值是两个独立的操作。问题在于你首先设置了键的过期时间,然后立即设置了键的值,这可能导致键的过期时间被重置。在 Redis 中,如果你对一个键进行重新赋值,那么与该键相关的过期时间将被移除,除非你显式地再次设置它。
要修正这个问题,你应该在设置键的值之后设置过期时间。这样可以确保键的过期时间在键值更新后依然有效。修改后的代码如下所示:
public void setAliToken(String token) {
String key = RedisKeyPrefix.MAN_MACHINE_ALI_TOKEN;
redisTemplate.opsForValue().set(key, token);
redisTemplate.expire(key, 10, TimeUnit.MINUTES);
}
这样修改后,先设置键的值,然后立即设置该键的过期时间,这可以确保即使键值被更新,过期时间也不会被重置或删除。