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

Redisはシングルスレッドです。では、なぜレタスを使うべきなのですか?

    Redisがコマンドを実行している間だけでなく、データの転送(コマンドの送信、結果の受信)にも時間を費やしているためです。転送中のシングルスレッドモードでは、Redisは機能しません。 Redisが機能している間、転送は発生しません。複数の接続または1つのパイプライン接続は、帯域幅とCPUサイクルの両方を飽和させるのに役立ちます。

    そして、lutteceはスピードだけではありません。また、非同期およびリアクティブAPIを使用してコードをより適切に整理するのにも役立ちます。

    パフォーマンスのトピックに戻ると、スレッド化とプーリングの影響を一般的に理解するための簡単なベンチマークがあります。プールは少し遅くなりますが(プール操作にある程度の時間を費やします)、アクションを分離して(エラーが他のスレッドに影響を与えないように)、MULTIを使用できることに注意してください。 およびブロッキングコマンド。

    これが私の結果です(ローカルシステムには4つのコアがあり、リモートシステムのCPUは約2倍遅い):

    スレッド=1

    Benchmark              (address)   Mode  Cnt      Score      Error  Units
    LettuceThreads.pooled     socket  thrpt   25  35389.995 ± 1325.198  ops/s
    LettuceThreads.pooled  localhost  thrpt   25  32075.870 ±  416.220  ops/s
    LettuceThreads.pooled     remote  thrpt   25   3883.193 ±   67.622  ops/s
    LettuceThreads.shared     socket  thrpt   25  39419.772 ± 1966.023  ops/s
    LettuceThreads.shared  localhost  thrpt   25  34293.245 ± 1737.349  ops/s
    LettuceThreads.shared     remote  thrpt   25   3919.251 ±   49.897  ops/s
    

    スレッド=2

    Benchmark              (address)   Mode  Cnt      Score      Error  Units
    LettuceThreads.pooled     socket  thrpt   25  56938.187 ± 2727.772  ops/s
    LettuceThreads.pooled  localhost  thrpt   25  49420.748 ± 2091.631  ops/s
    LettuceThreads.pooled     remote  thrpt   25   7791.706 ±  133.507  ops/s
    LettuceThreads.shared     socket  thrpt   25  81195.900 ± 1593.424  ops/s
    LettuceThreads.shared  localhost  thrpt   25  78404.688 ± 3878.044  ops/s
    LettuceThreads.shared     remote  thrpt   25   3992.023 ±   39.092  ops/s
    

    スレッド=4

    Benchmark              (address)   Mode  Cnt       Score      Error  Units
    LettuceThreads.pooled     socket  thrpt   25   87345.126 ± 8149.009  ops/s
    LettuceThreads.pooled  localhost  thrpt   25   75003.031 ± 4481.289  ops/s
    LettuceThreads.pooled     remote  thrpt   25   15807.410 ±  225.376  ops/s
    LettuceThreads.shared     socket  thrpt   25  169112.489 ± 3749.897  ops/s
    LettuceThreads.shared  localhost  thrpt   25  115464.778 ± 5099.728  ops/s
    LettuceThreads.shared     remote  thrpt   25    7952.492 ±  133.521  ops/s
    

    ここで、パフォーマンスはスレッドの数に応じて非常によく変化することがわかります。したがって、レタスは役に立たないわけではありません。




    1. 集約中にMongoDBISODateからUNIXタイムスタンプを秒単位で取得する

    2. マングースfindOneの使い方

    3. マングースの親によってスコープされた埋め込みドキュメントの一意性の検証

    4. mongoシェルを使用してmongodbに大きなレコードを挿入します