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