2024-09-26 22:51:39 发布
网友
我有一段时间没有使用redis了,我正在将python多处理中的几乎所有共享内存项代码(除了队列)移植到使用redis缓存中,我需要重新实现我的锁。 我在这里找到了这个答案:https://stackoverflow.com/a/20182448/3467349-这意味着使用brpop作为锁。在
brpop
但是,如果不能预先实例化所有必需的列表,那么这就行不通了。有没有特殊的方法来区分不存在的密钥上的nil和{}?在
nil
Redis中没有空列表-一旦一个列表没有元素,它就会被删除。您可以使用EXISTS命令验证。在
EXISTS
但是,对于BRPOP,您不需要担心这个问题-即使密钥不存在,该操作也将继续,直到另一个客户端将某个内容推入该列表或超时过期。在
BRPOP
Redis中没有空列表-一旦一个列表没有元素,它就会被删除。您可以使用
EXISTS
命令验证。在但是,对于
BRPOP
,您不需要担心这个问题-即使密钥不存在,该操作也将继续,直到另一个客户端将某个内容推入该列表或超时过期。在相关问题 更多 >
编程相关推荐