如何使用带有redis gem的psubscribe?

时间:2015-09-14 18:21:15

标签: ruby-on-rails ruby redis

我使用redis-rb和sidekiq。常规的$ subscribe方法运行良好,但在使用如下所示的$ psubscribe时我没有响应:

ActiveJob剪断:

$redis = Redis.new(:timeout => 0, :driver => :hiredis)

$redis.psubscribe(".*") do |on|
  on.message do |channel, msg|
    puts msg
  end
end

redis-cli命令:     发布'abc''你好'

当我从测试文件中尝试这个例子时,它也没有用。 https://github.com/redis/redis-rb/blob/98e3e7a516fc9b4609bc8ab482605f835a4de621/test/publish_subscribe_test.rb 你有什么建议可能是什么原因吗?

1 个答案:

答案 0 :(得分:2)

您需要使用pmessage方法而不是message来接收消息事件。

$redis.psubscribe(".*") do |on|
  on.pmessage do |pattern, channel, msg|
    puts msg
  end
end

请参阅 https://github.com/redis/redis-rb/blob/98e3e7a516fc9b4609bc8ab482605f835a4de621/test/publish_subscribe_test.rb#L62