Redis 使用ttl为键设置一个值

Redis 使用ttl为键设置一个值,redis,Redis,是否可以在redis中的单个命令中使用值和ttl设置nx键 我正在尝试在redis中实现锁定,这似乎是最好的方法。它是原子的,如果密钥已经存在,则返回0。是否可以使用TTL实现HSETNX e、 g 主要问题是Redis不支持hashmaps中的字段过期 只能通过调用myhash上的expire使整个hashmap过期 因此,您应该重新考虑使用普通Redis字符串而不是hashmaps,因为它们支持 除非您想在hashmap myhash上使用HGETALL、HKEYS或HVALS,否则它可以正

是否可以在redis中的单个命令中使用值和ttl设置nx键

我正在尝试在redis中实现锁定,这似乎是最好的方法。它是原子的,如果密钥已经存在,则返回0。是否可以使用TTL实现HSETNX

e、 g


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

只能通过调用myhash上的expire使整个hashmap过期

因此,您应该重新考虑使用普通Redis字符串而不是hashmaps,因为它们支持

除非您想在hashmap myhash上使用HGETALL、HKEYS或HVALS,否则它可以正常工作:


mynamespace在这里不是hashmap,它只是一个前缀,但在大多数情况下,它的工作原理与hashmaps相同。唯一的区别是没有有效的方法来判断哪些键存储在给定的名称空间中,或者用一个命令来获取它们。

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

只能通过调用myhash上的expire使整个hashmap过期

因此,您应该重新考虑使用普通Redis字符串而不是hashmaps,因为它们支持

除非您想在hashmap myhash上使用HGETALL、HKEYS或HVALS,否则它可以正常工作:


mynamespace在这里不是hashmap,它只是一个前缀,但在大多数情况下,它的工作原理与hashmaps相同。唯一的区别是,没有有效的方法来判断哪些键存储在给定的名称空间中,或者用一个命令来获取它们。

是的,我也注意到了SETEX。但SETNX的另一个好处是,如果存在密钥,它将返回false。我不认为SETEX会那么做是的我也注意到了SETEX。但SETNX的另一个好处是,如果存在密钥,它将返回false。我认为SETEX不会那样做。。
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
SETEX mynamespace:mykey 10 "myvalue"