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

名前の長さはRedisのパフォーマンスに影響しますか?

    あなたが使用することについて話している鍵は、実際にはそれほど長くはありません。

    提供するキーの例はセット用です。セットルックアップメソッドはO(1)です。セット(SDIFF、SUNION、SINTER)でのより複雑な操作は、O(N)です。 $userIdにデータを入力する可能性があります 長いキーを使用するよりもコストのかかる操作でした。

    Redisには、redis-benchmarkと呼ばれるベンチマークユーティリティが付属しています 、src / redis-benchmark.cの「GET」テストを変更してキーが「foo」になるようにすると、make installの後に短いキーテストを実行できます。 :

    diff --git a/src/redis-benchmark.c b/src/redis-benchmark.c
    --- a/src/redis-benchmark.c
    +++ b/src/redis-benchmark.c
    @@ -475,11 +475,11 @@
             benchmark("MSET (10 keys)",cmd,len);
             free(cmd);
    
    -        len = redisFormatCommand(&cmd,"SET foo:rand:000000000000 %s",data);
    +        len = redisFormatCommand(&cmd,"SET foo %s",data);
             benchmark("SET",cmd,len);
             free(cmd);
    
    -        len = redisFormatCommand(&cmd,"GET foo:rand:000000000000");
    +        len = redisFormatCommand(&cmd,"GET foo");
             benchmark("GET",cmd,len);
             free(cmd);
    

    短いキー「foo」を3回続けて実行した場合のGETテスト速度は次のとおりです。

    59880.24 requests per second
    58139.53 requests per second
    58479.53 requests per second
    

    ソースを再度変更し、キーを「set-allBooksBelongToUser:1234567890」に変更した後のGETテスト速度は次のとおりです。

    60240.96 requests per second
    60606.06 requests per second
    58479.53 requests per second
    

    Changing the key yet again to "ipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumlorem:1234567890" gives this:

    58479.53 requests per second
    58139.53 requests per second
    56179.77 requests per second
    

    したがって、本当に長いキーでさえ、redisの速度に大きな影響を与えることはありません。そして、これはGET、O(1)操作です。より複雑な操作は、これに対する感度がさらに低くなります。

    保持している値を明確に識別するキーを持つことは、省略されたキーから得られるわずかな速度のパフォーマンスを大幅に上回っていると思います。

    これをさらに進めたい場合は、-r [keyspacelen]もあります。 ランダムキーを作成できるredis-benchmarkユーティリティのパラメータ(「:rand:」が含まれている限り)、テストコードのプレフィックスのサイズを任意の長さに増やすことができます。

    >

    1. その場で生成される非常に大きなファイルをクライアントにダウンロードさせる方法

    2. 未処理のプロミス拒否:エラー:URLの形式が正しくないため、解析できません

    3. フィールド''のオブジェクト'target'のフィールドエラー:拒否された値[];コード[typeMismatch.target。、typeMismatch。、typeMismatch.java.util.Date、typeMismatch]

    4. Couchbase XDCRレプリケーション–ステップバイステップ–ベストプラクティス