sql >> データベース >  >> NoSQL >> Redis

レール上のRedispub/ sub

    Redis#subscribeの実装 イベントをリッスンするために現在のスレッドの制御を引き継ぐループです。これは、表示した方法でサブスクリプションをRailsクラスのコンテキストにドロップすると、ブートプロセスが停止することを意味します。

    呼び出しをスレッドでラップすることもできますが、このアプローチでは、Railsコンソールや複数のユニコーンなどの新しいプロセスでこのクラスが読み込まれるたびに、文字通り新しいサブスクリプションが作成されます。さらに、共有状態やその他のスレッドの問題に注意する必要があります。これはおそらくあなたが望むものではありません。

    Rails環境をロードし、Webリクエストを処理するプロセスとは別に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. node.jsでの圧縮

    2. 配列フィールドの値によるMongoDBgroup

    3. MongoDB $ cosh

    4. rediskeysコマンドで「OR」条件を適用する方法