Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Redis + ActionController::Utas langsung tidak mati

Solusi yang baru saja saya lakukan (meminjam banyak dari @teeg) yang tampaknya berfungsi dengan baik (belum menguji kegagalan, 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

Dan kemudian di pengontrol saya:

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 memasukkan rusak, atau menyortir dengan aneh?

  2. Sistem belum di-boot dengan systemd sebagai sistem init (PID 1). Tidak bisa beroperasi

  3. Dengarkan perubahan dalam daftar redis

  4. Apa keuntungan menggunakan backend kustom sesi Gorilla?

  5. redis cluster reshard [ERR] Memanggil MIGRATE:ERR Syntax error