Kunci yang Anda bicarakan tidak terlalu panjang.
Contoh kunci yang Anda berikan adalah untuk satu set, metode pencarian set adalah O(1). Operasi yang lebih kompleks pada himpunan (SDIFF, SUNION, SINTER) adalah O(N). Kemungkinannya adalah mengisi $userId
adalah operasi yang lebih mahal daripada menggunakan kunci yang lebih panjang.
Redis hadir dengan utilitas benchmark yang disebut redis-benchmark
, jika Anda memodifikasi tes "GET" di src/redis-benchmark.c sehingga kuncinya hanya "foo", Anda dapat menjalankan tes kunci singkat setelah 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);
Berikut adalah kecepatan tes GET untuk 3 proses berikutnya dari kunci pendek "foo":
59880.24 requests per second
58139.53 requests per second
58479.53 requests per second
Inilah kecepatan uji GET setelah memodifikasi sumber lagi dan mengubah kunci menjadi "set-allBooksBelongToUser:1234567890":
60240.96 requests per second
60606.06 requests per second
58479.53 requests per second
Mengubah kunci sekali lagi menjadi "ipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreiploreiploreipsumloresumipsumloreiploreiploreip memberi ini:":12
58479.53 requests per second
58139.53 requests per second
56179.77 requests per second
Jadi, kunci yang sangat panjang pun tidak berdampak besar pada kecepatan redis. Dan ini pada GET, operasi O(1). Operasi yang lebih kompleks akan menjadi kurang sensitif terhadap hal ini.
Menurut saya, memiliki kunci yang secara jelas mengidentifikasi nilai apa yang dipegangnya melebihi performa kecepatan sangat kecil yang akan Anda dapatkan dari kunci yang disingkat.
Jika Anda ingin melangkah lebih jauh, ada juga -r [keyspacelen]
parameter pada utilitas redis-benchmark yang memungkinkannya membuat kunci acak (selama mereka memiliki ':rand:' di dalamnya), Anda bisa menambah ukuran awalan dalam kode pengujian ke panjang apa pun yang Anda inginkan.