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

Redis — най-добрият начин за съхраняване на голяма карта (речник)

Да, както казва Итамар Хабер, трябва да погледнете това ръководство за оптимизация на паметта на Redis. Но трябва да имате предвид още няколко неща:

  1. Предпочитайте HSET пред KEYS. Redis консумира много памет само за управление на ключово пространство. Казано с прости (и груби) термини, 1 HSET с 1 000 000 ключа консумира до 10 пъти по-малко памет от 1 000 000 ключа с по една стойност всеки.
  2. Запазете размера на HSET по-малък от hash-max-zipmap-entries и валидна hash-max-zipmap-value ако паметта е основната цел. Не забравяйте да разберете какво hash-max-zipmap-entries и hash-max-zipmap-value означава. Освен това отделете време, за да прочетете за ziplist.
  3. Всъщност не искате да обработвате hash-max-zipmap-entries с 10M+ ключове; вместо това трябва да разбиете един HSET на множество слотове. Например задавате hash-max-zipmap-entries като 10 000. Така че, за да съхранявате 10 милиона+ ключове, имате нужда от 1000+ HSET ключа с по 10 000 всеки. Като грубо правило:crc32(key) % maxHsets.
  4. Прочетете за низовете в redis и използвайте дължина на KEY име (в HSET) въз основа на реално управление на паметта за тази структура. Казано по-просто, запазвайки дължината на ключа под 7 байта, вие изразходвате 16 байта на ключ, но 8-байтов ключ изразходва 48 байта всеки. Защо? Прочетете за простите динамични низове.

Може да е полезно да прочетете за:

  • Оптимизация на паметта Redis (от sripathikrishnan)
  • Коментари относно вътрешната структура на циплиста.
  • Съхраняване на стотици милиони прости двойки ключ-стойност в Redis (Instagram)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да се свържете сигурно с Heroku Redis чрез командния ред?

  2. Redis, Node.js и Socket.io:кръстосано удостоверяване на сървъри и разбиране на node.js

  3. Как списъците на Redis могат да се използват за внедряване на чат система?

  4. Twisted:защо предаването на отложено обратно извикване към отложена нишка прави нишката блокирана изведнъж?

  5. Проектиране на приложение с Redis като хранилище на данни. Какво? Защо?