あなたが使用することについて話している鍵は、実際にはそれほど長くはありません。
提供するキーの例はセット用です。セットルックアップメソッドは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:」が含まれている限り)、テストコードのプレフィックスのサイズを任意の長さに増やすことができます。