Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

रेडिस + एक्शनकंट्रोलर ::लाइव थ्रेड मर नहीं रहे हैं

एक समाधान जो मैंने अभी किया था (@teeg से बहुत कुछ उधार लेना) जो ठीक काम करता प्रतीत होता है (विफलता ने इसका परीक्षण नहीं किया है)

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

और फिर मेरे नियंत्रक में:

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. जेडिस क्लाइंट के रेडिस टेम्पलेट में एक ही कॉल में एकाधिक सूची मान कैसे प्राप्त करें

  2. रेडिस स्लेव मास्टर के साथ सिंक नहीं करेगा

  3. रेडिस के लिए एज़ूर कैश में पाइस्पार्क डेटाफ्रेम लिखने का कोई तरीका है?

  4. सभी समूहों में सॉकेट सत्र का उपयोग कैसे करें

  5. FindByIndexNameSessionRepository की बीन कैसे बनाएं?