Ruby on rails 如何在redis gem中使用PSU订阅?

Ruby on rails 如何在redis gem中使用PSU订阅?,ruby-on-rails,ruby,redis,Ruby On Rails,Ruby,Redis,我使用redisrb和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 comand: 发布

我使用redisrb和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 comand: 发布“abc”“你好”

另外,当我尝试测试文件中的示例时,它也不起作用。
您是否有任何建议,这可能是什么原因?

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

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

您为什么在这里使用全局变量“
$redis
”?我是rails新手,还不知道$variable约定。我将对此进行研究,但不认为这是问题所在,因为非常类似的代码适用于redis.subscribe方法作为新代码没有问题!请注意,全局变量可能会导致整个世界的麻烦,除非别无选择,否则应该避免。来自PHP或Perl背景的您可能没有意识到变量名中
$
的重要性。