em-синхрония исправляет гем em-redis, позволяя использовать его с волокнами, что эффективно позволяет ему работать в голиафах.
Вот проект, использующий Goliath + Redis, который может помочь вам понять, как все это работает: https://github.com/igrigorik/mneme
Пример с em-hiredis, что делает Голиаф, заключает ваш запрос в волокно, поэтому способ его проверки:
require 'rubygems'
require 'bundler/setup'
require 'em-hiredis'
require 'em-synchrony'
EM::run do
Fiber.new do
## this is what you can use in goliath
redis = EM::Hiredis.connect
p EM::Synchrony.sync redis.keys('*')
## end of goliath block
end.resume
end
и Gemfile, который я использовал:
source :rubygems
gem 'em-hiredis'
gem 'em-synchrony'
Если вы запустите этот пример, вы получите список определенных ключей в базе данных Redis, напечатанный на экране.
Без вызова EM :: Synchrony.sync вы получили бы отсрочку, но здесь оптоволокно приостанавливается до тех пор, пока вызовы не вернутся и вы не получите результат.