将空列表与不存在的列表区别对待


我已经有一段时间没有使用 redis

了,我正在将 python 多处理中几乎所有的共享内存项代码(除了队列)移植到使用 redis 缓存,我需要重新实现我的锁。我在这里找到了这个答案:https://stackoverflow.com/a/20182448/3467349 - 建议使用 brpop 作为锁。

但是,如果无法预先实例化所有必要的列表,这将不起作用。 有没有一种特殊的方法来区分不存在的密钥和nil上的nil

Redis 中没有空列表 - 一旦列表没有元素,它就会被删除。您可以使用 EXISTS 命令进行验证。

但是,使用 BRPOP ,您无需担心这一点 - 即使密钥不存在,操作也会继续,直到另一个客户端将某些内容推送到该列表中或超时过期。

最新更新