![](/img/trans.png)
[英]Can't connect to Redis from within a Docker container (Redis::CannotConnectError)
[英]Can't connect to Redis from Sinatra
我正在嘗試將redis連接到我正在構建的Sinatra應用程序:
require 'rubygems'
require 'sinatra'
#require 'sinatra/synchrony'
require 'redis'
require 'mongo_mapper'
require './startup'
def stats_connect
uri = URI.parse('redis://redistogo:xxxxxxxxxxxxxxxxxx@barb.redistogo.com:1337/')
puts 'connecting to... ' + uri.to_s
redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
puts "Statistics connected >> OK" if redis
return redis
end
stats = stats_connect
post('/') do
#...
end
如果我與領班運行以下應用程序,我收到此錯誤:
18:09:02 web.1 | 從pid 825開始
18:09:08 web.1 | /Users/vladdypwnz/.rvm/gems/ruby-1.9.2-p180/gems/redis-3.0.1/lib/redis/connection/ruby.rb:113:in“connect_nonblock”:無法分配請求的地址 - connect(2)(Errno :: EADDRNOTAVAIL)
18:09:08 web.1 | 來自/Users/vladdypwnz/.rvm/gems/ruby-1.9.2-p180/gems/redis-3.0.1/lib/redis/connection/ruby.rb:113:in`connect'
當我推送到heroku時,錯誤更改為:
/app/vendor/bundle/ruby/1.9.1/gems/redis-3.0.1/lib/redis/client.rb:260:in,buin in establish_connection':在barb.redistogo.com上超時連接到Redis: 0(Redis :: CannotConnectError)
如果我彈出IRB,需要redis並使用我創建的完全相同的stats_connect()方法,redis工作正常,我可以訪問所有內容並創建密鑰。
這是怎么回事? 我完全難過了。
你確定你的redis在barb.redistogo.com:1337上運行嗎? 幾周前,我使用redis將應用程序部署到heroku並使用了以下配置:
uri = URI.parse(ENV["REDISTOGO_URL"])
redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
我在本地運行它:
redis = Redis.new(:host => "localhost", :port => 6379)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.