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) 方法。它对我有用。
在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) 方法。它对我有用。