【问题标题】:Spring data redis key expirationSpring Data Redis 密钥过期
【发布时间】:2020-09-26 08:06:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: java redis spring-data-redis


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-04-25
        • 2020-04-19
        • 1970-01-01
        • 2012-08-04
        • 2017-09-18
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2017-02-21
        相关资源
        最近更新 更多