如何使用Redis Pub / Sub在多个工作人员之间映射作业?

时间:2011-04-08 16:36:30

标签: php performance redis publish-subscribe

我有一个Redis客户端需要在3个工人之间拆分/映射工作。假设该工作包含3个任务。我希望以这样的方式映射它们,其中3个并行运行,并且该作业仅占(大约)执行时间的1/3。有没有办法用Redis本身做到这一点?我没找到任何。

1 个答案:

答案 0 :(得分:4)

您可以使用redis创建任务队列。例如,您可以让主进程将任务推送到任务队列,然后让工作人员不断轮询任务队列以进行新工作。

掌握伪代码:

while(1)
  if some_condition
    redis.rpush "tasks", "task1"
    redis.rpush "tasks", "task2"
    redis.rpush "tasks", "task3"
  end
  sleep 5
end

工人伪代码:

while(1)
  # blpop blocks until there is an element in "tasks" 
  task = redis.blpop("tasks", 0)[1]
  perform task
end