Одна часть головоломки: rredis
1 - doRedis использует rredis.В частности, doRedis.R использует redis: RPush (поскольку он перебирает элементы foreach ), и каждый redisWorker использует redis: BRPop для получения чего-либо из redis list (который вы назвали в своей работе doRedis).
Redis - это не просто база данных.Здесь он используется в качестве очереди!
2 - у вас есть 1 экземпляр (удаленно), доступный для всех ваших сотрудников R.Думайте о сервере Redis как о распределенной очереди.Ваш мастер работы помещает элементы в список, а рабочие берут и обрабатывают элемент, обрабатывают его и помещают в список результатов.Вы можете иметь m рабочих для N предметов.Зависит от того, что вы хотите сделать.
3 - Используйте параметр env.При этом используется Redis: Set , к которому имеют доступ все работники (через Redis: Get ).Вы передаете выражение с разделителями на стороне foreach, которое задается строковым ключом в redis , к которому у рабочих есть доступ.
4 - я не знаю (но это вряд ли авторитетно)так что спросите вокруг.) Я также предлагаю вам прочитать предоставленный исходный код.Ответы выше прямо из чтения doRedis.R
и redisWorker.R
.
Надеюсь, это поможет.
[ps telnet для вашего redis и введите команду Redis: monitor следить за болтовней взад и вперед.]