【发布时间】:2015-10-25 06:17:29
【问题描述】:
我已经实现了类似于 redis 的可靠 que 模式的东西。你有两个列表。一个等待处理列表A,另一个列表当前处理的项目列表B。
我目前有 8 名工人,其模式如下。
- 80 rpoplpush listA listB in a multi.exec
- 处理80个项目
- 如果项目失败 lpush listA 项目
- 当每个项目完成时 lrem 1 项目
- 等待所有 80 项完成
- 重复
所以我的问题是,我是否无意中通过多次启动进程来阻止对这两个列表的访问?检查从 listA 中删除项目的速率,看起来 8 个工作人员的 80 个项目中只有一个被同时放入处理队列中。
为了提高性能,我是否应该将步骤 1 转换为一次只接受 1 项并完全删除步骤 5?当多个工作人员同时执行此操作时,这仍然被认为是安全的吗?
【问题讨论】:
标签: redis message-queue