Adı uzunluğu Redis performansını etkiliyor?
Redis ayrıntılı isim kullanmak için, örneğin set-allBooksBelongToUser:$userId
severim.
Böyle iyi mi, yoksa bu performansı etkiler mi?
CEVAP
Kullanmaktan bahsediyorsun sen anahtarı aslında o kadar uzun değil.
Verdiğiniz bir set için, arama yöntemleri O(1) ' dir. Bir set (SDİFF, SUNİON, aynı zamanda kendinden) daha karmaşık operasyonlar(N). Şans $userId
doldurma daha uzun bir anahtar kullanarak daha pahalı bir işlem olduğunu.
Redis sana "GİT"/redis-kriter.test src değiştirirseniz bir kıyaslama programı redis-benchmark
) adlı gelir c "tuşuna, kısa anahtar çalıştırabilirsiniz make install
sonra bir test . foo sadece o kadar
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);
İşte kısa anahtar 3 sonrakiler için test hızı"": . foo
59880.24 requests per second
58139.53 requests per second
58479.53 requests per second
İşte yine kaynak değiştirme ve anahtarı değiştirdikten sonra test hız "set-allBooksBelongToUser:1234567890":
60240.96 requests per second
60606.06 requests per second
58479.53 requests per second
Anahtarı yine":1234567890" bu verir: . ipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumlorem değişen
58479.53 requests per second
58139.53 requests per second
56179.77 requests per second
Gerçekten çok uzun anahtarlar redis hızı üzerinde büyük bir etkisi yok bile. Ve bu, (1) O bir işlemdir. Daha karmaşık işlemleri bile az duyarlı olur.
Açıkça kalıyorlar tanıtan anahtarları olması büyük ölçüde kısaltılmış anahtarları bittiğinde herhangi bir ufacık hız performans daha ağır basar bence.
Eğer istersen al bu da, orada da bir -r [keyspacelen]
parametre üzerinde redis-temel yarar sağlar oluşturun rastgele anahtarları (': rand:' onları), sadece artış boyutu öneki olarak test kod uzunluğu ne olursa olsun istedin.
Anonim fonksiyonları kullanarak perfor...
() 'UZUNLUĞU vs()...
Bir olmadığından, dize uzunluğu nedir?...
Bir GET isteği uzunluğu için bir sınır...
Nasıl en iyi performansını artırmak iç...