使用ttl将值设置为键

时间:2013-10-18 04:42:07

标签: redis

是否可以在redis中使用单个命令中的值和ttl setnx

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

进行HSETNX

e.g。

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

1 个答案:

答案 0 :(得分:4)

主要问题是Redis不支持散列图中的字段到期。

您只能通过EXPIRE上的myhash来过期整个哈希地图。

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

除非您想在哈希地图HGETALL上使用HKEYSHVALSmyhash,否则它会正常工作:

SETEX mynamespace:mykey 10 "myvalue"

mynamespace这里不是一个哈希映射,它只是一个前缀,但在大多数情况下它就像哈希映射那样工作。唯一的区别是没有有效的方法来判断哪些密钥存储在给定的namespace中,或者只用一个命令来获取它们。