简体   繁体   English

如何使用带有Redis的EM :: Synchrony :: Multi?

[英]how to use EM::Synchrony::Multi with redis?

I am trying to perform several redis queries in parallel, but getting an error: 我正在尝试并行执行几个redis查询,但出现错误:

/var/lib/gems/1.9.1/gems/em-synchrony-1.0.2/lib/em-synchrony.rb:53:in `resume':
dead fiber called (FiberError)

here is the code: 这是代码:

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

please help 请帮忙

Use the Eventmachine specific em-hiredis gem instead of the default driver. 使用Eventmachine特定的em-hiredis gem代替默认驱动程序。

gem install em-hiredis

require 'em-synchrony'
require 'em-synchrony/em-hiredis'

redis = EM::Synchrony::ConnectionPool.new(size: 4) do
          EM::Hiredis.new
        end

Anywhere EM::Synchrony is used, it is usually suggested to use the synchrony specific library shipped with em-synchrony . 在使用EM::Synchrony任何地方,通常建议使用em-synchrony随附的特定于同步的库。 That is why the statement em-synchrony/em-hiredis and not require em-synchrony . 这就是为什么语句em-synchrony/em-hiredis而不require em-synchrony

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM