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

TornadoからRedisを*適切に*クエリするにはどうすればよいですか?

    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データベースのオブジェクトインスタンス。



    1. mongodbのタイムスタンプの差を(時間単位で)計算する方法は?

    2. MongoDB:インデックスの順序とクエリの順序は一致する必要がありますか?

    3. Redis:ソートされたセットのスコアの合計

    4. ハウツー:HBase Thriftインターフェースの使用、パート1