Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis cố gắng kết nối với localhost trên Heroku thay vì REDIS_URL

Tôi có thể nghĩ đến hai khả năng:

  • Có phải cài đặt gì đó không ENV['REDIS_URL'] trước khi trình khởi tạo chạy? Ví dụ:có thể bạn có .env tệp được kiểm tra thành git đang ghi đè biến Heroku?

  • Bạn nói mã này là từ redis.rb . Bạn có config/initializers/resque.rb không Mà còn? Còn về config/resque.yml ? Một trong hai cái đó có thể là cũng đang cố gắng mở kết nối Redis. (Nếu bạn có thể đăng toàn bộ dấu vết ngăn xếp về lỗi của mình, bạn có thể xác nhận điều này hoặc loại trừ nó.) Hay bạn đang sử dụng Redis cho bất kỳ điều gì khác ngoài Resque?

Bạn cũng có thể thực hiện một số gỡ lỗi printf và thay đổi trình khởi tạo của mình để nói:

if Rails.env.production?
  puts "production: #{ENV['REDIS_URL']}"
  uri = URI.parse(ENV["REDIS_URL"])
else
  puts "not production"
  uri = URI.parse("redis://localhost:6379")
end

Điều đó sẽ giúp bạn làm rõ những gì đang xảy ra. (Bạn có thể cần sử dụng Rails.logger.info thay vì puts .)

CHỈNH SỬA: Dấu vết ngăn xếp đó rất hữu ích! Chắc chắn rồi, trình khởi tạo của riêng bạn hoàn toàn không ở đó, nhưng có mã khác đang cố tải kết nối redis của chính nó, tại đây:

remote:        /tmp/build_329306a238b046dda86a54d29db48f4c/vendor/bundle/ruby/2.4.0/gems/resque-web-0.0.9/config/initializers/resque_config.rb:4:in `<top (required)>'

Nếu bạn nhìn vào viên ngọc đó, bạn có thể thấy nó đang làm việc này:

require 'resque'

config = ENV.fetch("RAILS_RESQUE_REDIS", "127.0.0.1:6379")
Resque.redis = config

Vì vậy, tôi nghĩ câu trả lời là đặt RAILS_RESQUE_REDIS ngoài ra tới REDIS_URL . Bạn có thể sử dụng Heroku config:set lệnh để làm điều đó.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khớp Redis QUÉT

  2. Làm thế nào để sử dụng redis '`DUMP` và` RESTORE` (ngoại tuyến)?

  3. Giao diện người dùng Web Logstash không khởi động

  4. Theo dõi các tương tác của Redis trong javascript bằng Sinon

  5. So sánh memcache, redis và ehcache dưới dạng khung bộ nhớ đệm phân tán