Как использовать EM::Synchrony::Multi с Redis?
Я пытаюсь выполнить несколько запросов redis параллельно, но получаю сообщение об ошибке:
/var/lib/gems/1.9.1/gems/em-synchrony-1.0.2/lib/em-synchrony.rb:53:in `resume':
dead fiber called (FiberError)
вот код:
require 'em-synchrony'
require 'redis/connection/synchrony'
require 'redis'
redis = EM::Synchrony::ConnectionPool.new(size: 4) do
Redis.new
end
EM.synchrony do
multi = EM::Synchrony::Multi.new
multi.add :a, redis.alpush('foo', 1)
multi.add :b, redis.alpush('foo', 2)
res = multi.perform
p res
EM.stop
end
пожалуйста помоги
1 ответ
Решение
Используйте специальный Eventmachine em-hiredis
драгоценный камень вместо драйвера по умолчанию.
gem install em-hiredis
require 'em-synchrony'
require 'em-synchrony/em-hiredis'
redis = EM::Synchrony::ConnectionPool.new(size: 4) do
EM::Hiredis.new
end
В любом месте EM::Synchrony
обычно предлагается использовать специальную библиотеку синхронизма, поставляемую с em-synchrony
, Вот почему заявление em-synchrony/em-hiredis
и не require em-synchrony
,