1

我有以下红宝石来订阅频道。

当我将主机设置为“本地主机”时,我没有问题 - 即脚本启动

当我设置为 localhost 以外的 IP 地址(运行 redis 的地方)时,我得到了超时。连接到 Redis 超时如果我删除 :timeout => 0 脚本将运行,但是我相信这是为订阅者设置的正确值,以确保我的客户端永远不会超时。

如何防止订阅者发生超时?

require 'redis'

$redis = Redis.new :host => 'IPADDRESS', :timeout => 0

$redis.subscribe('MyChannel', ) do |on|
  on.message do |channel, msg|
    puts "M is #{msg}"
  end
end
4

1 回答 1

0

您是否已将 redis 配置为侦听正确的 IP 地址?默认情况下,它只侦听 localhost。在 redis.comf 中,你会发现一行写着 bind 127.0.0.1。要么注释掉它,让 redis 监听系统拥有的所有地址,要么将 localhost 地址更改为你希望它监听的地址。

请注意,将其设置为 IP 意味着它仅在该 IP 上可用。

完成更改后,重新启动 redis 服务。然后使用 redis-cli 进行验证,如this answer to a similar question中所述

于 2013-06-01T15:54:07.960 回答