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

Сравнение на производителността при използване на хешове на Redis спрямо много ключове

Избиране на hash над string има много предимства и някои недостатъци в зависимост от случаите на употреба. Ако ще изберете хеш, по-добре е да проектирате своя json обект като хеш полета и стойности като;

127.0.0.1:6379> hset user:1 ssn 10101010101 name john surname wick date 2020-02-02 location continental
(integer) 5
127.0.0.1:6379> hgetall user:1
 1) "ssn"
 2) "10101010101"
 3) "name"
 4) "john"
 5) "surname"
 6) "wick"
 7) "date"
 8) "2020-02-02"
 9) "location"
10) "continental"

Ето предимствата на hash над низове, когато правите правилно моделиране на данни.

  • От страна на производителността повечето команди както за низове, така и за хеш имат еднаква сложност.
  • По-лесен достъп/актуализиране/изтриване на отделни json полета в хешове, когато се сравняват с низовете. Не е нужно да получавате целия низ, да декодирате, да правите промени и да го задавате отново. Можете да използвате HDEL, HSET или HGET за тези операции, без да получавате целия обект.
  • Ако размерът на вашия низ обект се увеличи, ще страдате от мрежа и честотна лента, докато прехвърляте (получавате/настройвате) целия обект. Както е посочено в документацията

Скоростта на RAM и честотната лента на паметта изглеждат по-малко критични за глобалната производителност, особено за малки обекти. За големи обекти (>10 KB) обаче може да стане забележимо.

  • Хешовете са по-удобни за паметта от низовете, ако направите добър сравнителен тест за проектиране на размера на данните си. Както е посочено в документацията и примерен случай на използване от инстаграм инженеринг, може да получите огромна полза със специалното кодиране.

Хешове, списъци, набори, съставени само от цели числа, и сортирани набори, когато са по-малки от даден брой елементи и до максимален размер на елемента, се кодират по много ефективен от паметта начин, който използва до 10 пъти по-малко памет (с 5 време по-малко използвана памет е средното спестяване).

От друга страна, в зависимост от вашия случай(и);

  • ziplist не се предлага безплатно, това е компромис между памет и процесор.
  • Не можете да изтекате частично хеш полета. Ако разделите на множество низове, можете да EXPIRE ги, но в хешове само ключът от най-високо ниво може да бъде изтекъл с всички стойности.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сравнение на memcache, redis и ehcache като разпределена рамка за кеширане

  2. Как мога да получа всички набори в redis?

  3. Как да стартирам Redis на Windows 32 bit?

  4. Как да съхранявате масив от обекти в Redis?

  5. Redis:Сбор от Резултати в сортиран набор