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

Redis + ActionController ::Chuỗi trực tiếp không chết

Một giải pháp tôi vừa làm (mượn rất nhiều từ @teeg) có vẻ hoạt động ổn (chưa thử nghiệm thất bại, tho)

config / initializers / redis.rb

$redis = Redis.new(:host => "xxxx.com", :port => 6379)

heartbeat_thread = Thread.new do
  while true
    $redis.publish("heartbeat","thump")
    sleep 30.seconds
  end
end

at_exit do
  # not sure this is needed, but just in case
  heartbeat_thread.kill
  $redis.quit
end

Và sau đó trong bộ điều khiển của tôi:

Trình ghi nhật ký
def events
    response.headers["Content-Type"] = "text/event-stream"
    redis = Redis.new(:host => "xxxxxxx.com", :port => 6379)
    logger.info "New stream starting, connecting to redis"
    redis.subscribe(['parse.new','heartbeat']) do |on|
      on.message do |event, data|
        if event == 'parse.new'
          response.stream.write("event: parse\ndata: #{data}\n\n")
        elsif event == 'heartbeat'
          response.stream.write("event: heartbeat\ndata: heartbeat\n\n")
        end
      end
    end
  rescue IOError
    logger.info "Stream closed"
  ensure
    logger.info "Stopping stream thread"
    redis.quit
    response.stream.close
  end


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis, làm thế nào để tăng tất cả các điểm số của một zset với ZINCRBY?

  2. Rails, Sidekiq - Redis NOAUTH

  3. TTL cho một thành viên đã đặt

  4. Cách tạo RedisCacheManager trong Spring-data 2.0.x

  5. Yii2 + Redis làm Cơ sở dữ liệu