Redis
 sql >> база данни >  >> NoSQL >> Redis

Redis pub/sub on rails

Реализацията на Redis#subscribe е цикъл, който ще поеме контрола върху текущата нишка, за да слуша събития. Това означава, че процесът на зареждане се спира при пускане на абонамент в контекста на клас Rails по начина, който сте показали.

Можете да опитате да обвиете обаждането в нишка, но този подход буквално ще създаде нов абонамент всеки път, когато този клас се зареди в нов процес, като релсова конзола или множество еднорози. Освен това ще трябва да внимавате за споделеното състояние и други проблеми с нишката. Това вероятно не е това, което искате.

Най-добре е да започнете различен процес, който зарежда средата на rails и се абонира за redis отделно от процесите, обслужващи уеб заявки. Може да е задача за рейк като следната:

namespace :subscribe do
  task :redis => :environment do
    $redis.subscribe("bravo") do |on|
      on.message do |channel, message|
        Rails.logger.info("Broadcast on channel #{channel}: #{message}")
        OtherClass.some_method # yada yada
      end
    end
  end
end



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да пренасочите изхода на абонамента за redis

  2. Redis управляван Pub/Sub сървър

  3. Как мога да преобразувам байтове в цял шестнадесетичен низ?

  4. Faye или Redis Pubsub

  5. Php7 Redis клиент на Alpine OS