Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

क्या नाम की लंबाई रेडिस में प्रदर्शन को प्रभावित करती है?

आप जिस कुंजी का उपयोग करने की बात कर रहे हैं वह वास्तव में इतनी लंबी नहीं है।

आपके द्वारा दी गई उदाहरण कुंजी एक सेट के लिए है, सेट लुकअप विधियां ओ (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

स्रोत को फिर से संशोधित करने और कुंजी को "सेट-ऑलबुक्सबेलोंगटॉयूसर:1234567890" में बदलने के बाद GET परीक्षण गति यहां दी गई है:

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

कुंजी को फिर से "ipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumloreipsumlore" में फिर से बदलना

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

तो वास्तव में वास्तव में लंबी चाबियों का भी रेडिस की गति पर बड़ा प्रभाव नहीं पड़ता है। और यह जीईटी पर है, एक ओ (1) ऑपरेशन। अधिक जटिल ऑपरेशन इसके प्रति और भी कम संवेदनशील होंगे।

मुझे लगता है कि आपके पास ऐसी कुंजियाँ हैं जो स्पष्ट रूप से पहचानती हैं कि उनके पास कौन से मान हैं जो किसी भी छोटी गति के प्रदर्शन से अधिक हैं जो आपको संक्षिप्त कुंजियों से प्राप्त होंगे।

यदि आप इसे और आगे ले जाना चाहते हैं, तो एक -r [keyspacelen] भी है रेडिस-बेंचमार्क उपयोगिता पर पैरामीटर जो इसे यादृच्छिक कुंजी बनाने देता है (जब तक उनके पास ':रैंड:' होता है), आप परीक्षण कोड में उपसर्ग के आकार को अपनी इच्छानुसार बढ़ा सकते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डोकर रेल शुरू करने में विफल

  2. रेडिस + एक्शनकंट्रोलर ::लाइव थ्रेड मर नहीं रहे हैं

  3. रेडिस में रोलबैक के साथ लेनदेन को कैसे कार्यान्वित करें

  4. Django चैनल त्रुटि - 'asgi_redis.RedisChannelLayer' वापस आयात नहीं कर सकता

  5. एक यूआरएल के तहत मैराथन (मेसोस) में रेडिस चलाएं