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