Ruby on rails 无法连接到远程redis(使用rails)

Ruby on rails 无法连接到远程redis(使用rails),ruby-on-rails,redis,Ruby On Rails,Redis,我正在尝试将redis与rails和名称空间一起使用。 在my application.rb中,我放了: config.cache_store = :redis_store, 'redis://localhost:6379/0/cache', { expires_in: 90.minutes } 这里的localhost是我正在开发rails项目的windows中的redis 在我的config/initializers/redis.rb中: $redis = Redis::Namespace

我正在尝试将redis与rails和名称空间一起使用。 在my application.rb中,我放了:

config.cache_store = :redis_store, 'redis://localhost:6379/0/cache', { expires_in: 90.minutes }
这里的localhost是我正在开发rails项目的windows中的redis

在我的config/initializers/redis.rb中:

$redis = Redis::Namespace.new("my_app_name", :redis => Redis.new)
从我的控制器我可以很好地访问它

$redis.set("foo","bar")
word=$redis.get("foo")
puts word -------> output is "bar".
但我无法在另一台linux服务器而不是本地主机上访问Redis。 我试着做:

config.cache_store = :redis_store, 'redis://that_server_ip:6379/0', { expires_in: 90.minutes }
但是我一直在

Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (Redis::TimeoutError)).

您需要通过防火墙公开端口,使用
iptables
ufw

[更新]


你能发布你的
/etc/hosts
文件吗?

你的错误消息说它仍在尝试连接到本地主机,但失败了。您可能需要重新启动应用程序以接受新配置

我尝试重新启动应用程序。仍然尝试连接到本地主机。这意味着它无法识别新配置,或者您需要以不同的位置/方式配置它。我是一个,不是ruby的家伙,但是看着它,我觉得在你的redis.rb中调用connection create需要向它传递连接细节。我对redis是相当陌生的。请进一步解释这两个术语,它们是操作系统级防火墙工具,而不是redis工具。只要你的应用程序试图连接到localhost,这些就不适用。你能在你的localhost和该服务器上发布你的/etc/hosts文件吗?hosts文件在使用IP addreses时并不重要。“//该服务器ip:6379”。