使用多重伤害redis可靠的队列性能

时间:2015-10-25 06:17:29

标签: redis message-queue

我实现了类似于redis可靠的que模式的东西。你有两个清单的地方。一个等待处理listA和另一个当前处理的项目listB列表。

我目前有8名工人,他们的模式如下。

  1. 80 rpoplpush list multi.exec中的listB
  2. 处理80个项目
  3. 如果项目失败lpush listA item
  4. 每件商品完成时lrem 1 item
  5. 等待所有80个项目完成
  6. 重复
  7. 所以我的问题是我是否通过在多个中启动进程来无意中阻止对两个列表的访问?检查项目从listA中删除的速率,看起来8个worker的80个项目中只有一个一次被放入处理队列中。

    为了提高性能我应该将第一步转换为一次只接受1项并完全删除第5步吗?当多个工作人员同时执行此操作时,这仍然被认为是安全的。

1 个答案:

答案 0 :(得分:0)

只有在发送命令并且正在处理整个命令时才会阻止Redis。我会说你会产生小的中断。

这里最好的建议应该是尝试在需要时对Redis执行操作,如果您可以评估应用程序层中的某些内容,则可以避免访问它。

我怀疑移动80项应该是一个问题......