BLPOPのようなコマンドのブロックや、Pub / Subチャネルのリッスンに関しては、tornado-redisのような非同期クライアントが必要です。 このデモから始めて、tornado-redisクライアントを使用して簡単なパブリックチャットアプリケーションを開発する方法を確認できます。
ただし、他のほとんどの場合は、同期redis-pyクライアントをhiredisと組み合わせて使用することをお勧めします。
非同期クライアントの主な利点は、サーバーがRedisサーバーの応答を待っている間に着信要求を処理できることです。ただし、Redisサーバーは非常に高速であるため、ほとんどの場合、Tornadoアプリケーションで非同期コールバックを設定するオーバーヘッドにより、Redisサーバーの応答を待機する時間よりも、リクエスト処理の合計時間が長くなります。
非同期クライアントを使用すると、複数のリクエストを同時にRedisサーバーに送信しようとする場合がありますが、Redisサーバーはシングルスレッドサーバー(Tornadoサーバーと同様)であるため、これらのリクエストに1つずつ応答します。ほとんど何も得られません。実際、MGET / MSETのようなパイプラインとコマンドがある限り、同じRedisサーバーに複数のRedisコマンドを同時に送信する必要はありません。
非同期クライアントには、複数のRedisサーバーインスタンスを使用する場合にいくつかの利点がありますが、同期(redis-py)クライアントとtwemproxyまたはこのプロキシ(後者はパイプラインおよびMGET / MSETコマンドをサポートします)のようなプロキシを使用することをお勧めします。
また、Tornadoアプリケーションでredis-pyクライアントを使用する場合は、接続プールを使用しないことをお勧めします 。単一のRedis
を作成するだけです アプリケーションが接続する各Redisデータベースのオブジェクトインスタンス。