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

TornadoでRedis接続を処理する適切な方法は何ですか? (非同期-パブ/サブ)

    少し遅れましたが、tornado-redisを使用しています。これは、tornadoのioloopおよびtornado.genで動作します モジュール

    tornadoredisをインストールする

    pipからインストールできます

    pip install tornadoredis
    

    またはsetuptoolsを使用

    easy_install tornadoredis
    

    しかし、あなたは本当にそうすべきではありません。リポジトリのクローンを作成して抽出することもできます。次に実行します

    python setup.py build
    python setup.py install
    

    redisに接続

    次のコードは、main.pyまたは同等のものに含まれます

    redis_conn = tornadoredis.Client('hostname', 'port')
    redis_conn.connect()
    

    redis.connectは1回だけ呼び出されます。これはブロッキング呼び出しであるため、メインioloopを開始する前に呼び出す必要があります。同じ接続オブジェクトがすべてのハンドラー間で共有されます。

    のようにアプリケーション設定に追加できます
    settings = {
        redis = redis_conn
    }
    app = tornado.web.Application([('/.*', Handler),],
                                  **settings)
    

    tornadoredisを使用する

    この接続は、ハンドラーでself.settings['redis']として使用できます。 または、BaseHandlerクラスのプロパティとして追加できます。リクエストハンドラはそのクラスをサブクラス化し、プロパティにアクセスします。

    class BaseHandler(tornado.web.RequestHandler):
    
        @property
        def redis():
            return self.settings['redis']
    

    redisと通信するには、tornado.web.asynchronous およびtornado.gen.engine デコレータが使用されます

    class SomeHandler(BaseHandler):
    
        @tornado.web.asynchronous
        @tornado.gen.engine
        def get(self):
            foo = yield gen.Task(self.redis.get, 'foo')
            self.render('sometemplate.html', {'foo': foo}
    

    追加情報

    その他の例や、接続プールやパイプラインなどの他の機能は、githubリポジトリにあります。



    1. MongoDBはストレージサイズを制限しますか?

    2. MongoDBデータベースのコレクションを一覧表示する4つの方法

    3. サーバー検出および監視エンジンは非推奨です

    4. 接続に失敗したときにすぐにエラーをスローするようにNodeRedisクライアントを構成するにはどうすればよいですか? [詳細を読む]