Redis
 sql >> база данни >  >> NoSQL >> Redis

Влияе ли дължината на името на производителността в Redis?

Ключът, за който говорите да използвате, всъщност не е толкова дълъг.

Примерният ключ, който давате, е за набор, методите за търсене на набор са O(1). По-сложните операции върху набор (SDIFF, SUNION, SINTER) са O(N). Вероятно е това да попълни $userId беше по-скъпа операция от използването на по-дълъг ключ.

Redis идва с помощна програма за сравнителен анализ, наречена redis-benchmark , ако промените теста "GET" в src/redis-benchmark.c, така че ключът им да е просто "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);

Ето тестовата скорост на GET за 3 следващи пуска на краткия клавиш „foo“:

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

Ето тестовата скорост на GET, след като промените отново източника и промените ключа на "set-allBooksBelongToUser:1234567890":

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Колко често трябва да отварям/затварям връзката си с Booksleeve?

  2. Инсталиране на Redis на Ubuntu 16.04/18.04

  3. Внедряване на ScaleGrid DBaaS за Redis™ в AWS виртуален частен облак (VPC)

  4. Redis - Използване на стойност Incr в транзакция

  5. Запитване с Redis?