Spring数据Redis密钥过期

问题描述 投票:0回答:1

在春季数据redis中,我们有两个变量。

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

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

java redis spring-data-redis
1个回答
0
投票

在Redis(以及Spring Data Redis)中,您只能在整个键上使用EXPIRE(这是expireAt(String key, Date date)的用途-您不能使hash的某些字段(条目)失效,而对其他字段则不能失效。您只能使整个hash失效。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.