sql >> Database teknologi >  >> NoSQL >> Redis

Redis + ActionController::Live tråde dør ikke

En løsning, jeg lige har lavet (låner meget fra @teeg), som ser ud til at fungere okay (har ikke fejltestet den, 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

Og så i min controller:

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. Hvad er den mest modne MongoDB-driver til C#?

  2. hvordan man importerer en .csv-datafil til Redis-databasen

  3. Mongodb C#-driver returnerer kun matchende underdokumenter i array

  4. MongoDB $mul