在springdataredis中,我们有两个变量。
RedisTemplate<Key, Value> redisTemplate;
HashOperations<Key, HashKey, HashValue> hashOperations;
redistemplate中有一个expireat方法(字符串键、日期)。所以,如果我想为一个特定的散列键设置一个有效期,我可以使用这个方法,或者这个方法只能在键级别工作,并使该键中的所有条目失效?
在springdataredis中,我们有两个变量。
RedisTemplate<Key, Value> redisTemplate;
HashOperations<Key, HashKey, HashValue> hashOperations;
redistemplate中有一个expireat方法(字符串键、日期)。所以,如果我想为一个特定的散列键设置一个有效期,我可以使用这个方法,或者这个方法只能在键级别工作,并使该键中的所有条目失效?
2条答案
按热度按时间cs7cruho1#
如果它对任何人都有帮助的话,我将使用redistemplate.expireat(字符串键,日期)方法来实现这个目的。这对我很有用。
lyfkaqu12#
在redis(以及SpringDataRedis)中,您只能使用
EXPIRE
(这是什么expireAt(String key, Date date)
在整个密钥上使用-不能使密钥的某些字段(条目)过期hash
但不是其他人。您只能使整个hash
.这意味着如果你想让一些
hash
但不是其他领域,你需要找到一个解决办法。我以前用过的一种方法就是有第二种hash
(或zset
)和我一样的领域hash
,但每个字段的值(如果使用zset
)字段过期的时间戳。这里的缺点是您需要一些代码来检查字段何时过期,然后删除它们。另一种选择是只使用常规的
string
钥匙而不是钥匙hash
. 但这也有它自己的缺点(例如,如果你需要的话)HLEN
您需要在代码中使用SCAN
).