3

是否可以在 redis 的单个命令中设置具有值和 ttl 的键

我正在尝试在 redis 中实现锁定,而http://redis.io/commands/hsetnx似乎是最好的方法。它是原子的,如果键已经存在,则返回 0。是否可以使用 TTL 进行 HSETNX

例如

HSETNX myhash mykey "myvalue" 10

#and key expires after 10 seconds, and a subsequent HSETNX after 10 seconds returns a value 1 i.e. it behaves as if mykey is not present in myhash
4

1 回答 1

4

主要问题是 Redis 不支持 hashmap 中的字段过期。

您只能通过调用使整个哈希图EXPIRE过期myhash

所以,你应该重新考虑使用普通的 Redis 字符串而不是 hashmap,因为它们支持SETEXoperation

除非您想利用 using或在您的 hashmap 上HGETALL,否则它会正常工作:HKEYSHVALSmyhash

SETEX mynamespace:mykey 10 "myvalue"

mynamespace这里不是 hashmap,它只是一个前缀,但在大多数情况下,它就像 hashmaps 一样工作。唯一的区别是没有有效的方法来判断哪些键存储在给定的namespace或通过单个命令获取它们。

于 2013-10-18T05:28:40.320 回答