是否可以在redis中使用单个命令中的值和ttl setnx
我正在尝试在redis中实现锁定,而http://redis.io/commands/hsetnx似乎是最好的方法。它是原子的,如果一个键已经存在则返回0。是否可以使用TTL
进行HSETNXe.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
答案 0 :(得分:4)
主要问题是Redis不支持散列图中的字段到期。
您只能通过EXPIRE
上的myhash
来过期整个哈希地图。
所以,你应该重新考虑使用普通的Redis字符串而不是hashmaps,因为它们支持SETEX
operation。
除非您想在哈希地图HGETALL
上使用HKEYS
,HVALS
或myhash
,否则它会正常工作:
SETEX mynamespace:mykey 10 "myvalue"
mynamespace
这里不是一个哈希映射,它只是一个前缀,但在大多数情况下它就像哈希映射那样工作。唯一的区别是没有有效的方法来判断哪些密钥存储在给定的namespace
中,或者只用一个命令来获取它们。