spring数据redis密钥过期

cclgggtu  于 2021-06-09  发布在  Redis
关注(0)|答案(2)|浏览(361)

在springdataredis中,我们有两个变量。

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

redistemplate中有一个expireat方法(字符串键、日期)。所以,如果我想为一个特定的散列键设置一个有效期,我可以使用这个方法,或者这个方法只能在键级别工作,并使该键中的所有条目失效?

cs7cruho

cs7cruho1#

如果它对任何人都有帮助的话,我将使用redistemplate.expireat(字符串键,日期)方法来实现这个目的。这对我很有用。

lyfkaqu1

lyfkaqu12#

在redis(以及SpringDataRedis)中,您只能使用 EXPIRE (这是什么 expireAt(String key, Date date) 在整个密钥上使用-不能使密钥的某些字段(条目)过期 hash 但不是其他人。您只能使整个 hash .
这意味着如果你想让一些 hash 但不是其他领域,你需要找到一个解决办法。我以前用过的一种方法就是有第二种 hash (或 zset )和我一样的领域 hash ,但每个字段的值(如果使用 zset )字段过期的时间戳。这里的缺点是您需要一些代码来检查字段何时过期,然后删除它们。
另一种选择是只使用常规的 string 钥匙而不是钥匙 hash . 但这也有它自己的缺点(例如,如果你需要的话) HLEN 您需要在代码中使用 SCAN ).

相关问题