Spring 数据redis 键过期

Spring data redis key expiration

在spring数据redis中我们有两个变量。

RedisTemplate<Key, Value> redisTemplate;
HashOperations<Key, HashKey, HashValue> hashOperations;

RedisTemplate 中有一个方法expireAt(String key, Date date)。因此,如果我想为特定哈希键设置过期时间,我可以使用此方法,或者这仅适用于键级别并使该键内的所有条目过期?

在 Redis(以及 Spring Data Redis)中,您只能对整个键使用 EXPIRE(这是 expireAt(String key, Date date) 使用的)——您不能使某些字段(条目)过期) 属于 hash 而不是其他。您只能使整个 hash.

过期

这意味着如果您想使某些 hash 字段而不是其他字段过期,您需要找到解决方法。我以前用过的一个方法是让第二个 hash(或 zset)具有与我的 hash 相同的字段,但每个字段的值(如果使用zset) 是该字段应该过期的时间戳。这里的缺点是您需要一些代码来检查字段何时过期然后将其删除。

另一种选择是只使用常规 string 键而不是 hash。但这有其自身的缺点(例如,如果您需要 HLEN,则需要使用 SCAN 在您的代码中实现它)。

如果对任何人有帮助,我为此目的使用 redisTemplate.expireAt(String Key, Date date) 方法。它对我有用。