Как сопоставить работу среди нескольких работников с помощью Redis Pub / Sub? - PullRequest
1 голос
/ 08 апреля 2011

У меня есть клиент Redis, который должен разделить / нанести на карту работу, скажем, среди 3 работников. Предположим, что задание состоит из 3 заданий. Я хочу отобразить их таким образом, чтобы 3 из них работали параллельно, а задание занимало только (приблизительно) 1/3 времени выполнения. Есть ли способ сделать это с самой Redis? Я не нашел ни одного.

1 Ответ

4 голосов
/ 11 апреля 2011

Вы можете использовать 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
...