我也在谷歌上搜索过,但找不到明确的答案。
我要解决的用例如下。多个系统发送所有与同一标识符相关联的进程完成状态。我想在与同一标识符关联的所有进程完成时发出通知。我想使用 redis 作为我的数据存储,以标识符为键。通知系统是多线程的,将处理来自不同系统的状态完成事件。
场景:标识符 123 有两个与之关联的进程 p1 和 p2。假设通知系统线程处理 p1 完成状态之一。它从 redis 中提取与 123 关联的数据。它看到 p2 尚未完成。它将 p1 完成状态添加到 redis 值并更新密钥。假设 P2 完成状态并行发生同样的事情。最后,我的两个线程都没有发出最终完成状态。如何着手解决这个问题?
我从 redis 文档中看到 redis 是单线程的。这是否意味着当一个线程对一个键执行更新时,没有其他线程可以对同一个键执行任何读/写操作?
我从 redis 文档中看到 redis 是单线程的。这是否意味着当一个线程对一个键执行更新时,没有其他线程可以对同一个键执行任何读/写操作?
是的,但这确实意味着在当前线程使用新值更新它之前,另一个线程不会读取该值。这也不意味着另一个线程,不知道当前线程所做的更新,不会用它自己的东西覆盖更新。
阅读有关Redis 的事务,并特别确保您了解其WATCH工作原理。