Redis
 sql >> Database >  >> NoSQL >> Redis

Redis:il modo migliore per memorizzare una mappa di grandi dimensioni (dizionario)

Sì, come dice Itamar Haber, dovresti guardare questa guida all'ottimizzazione della memoria redis. Ma dovresti anche tenere a mente alcune altre cose:

  1. Preferisci HSET a KEYS. Redis consuma molta memoria solo per la gestione dello spazio chiave. In parole povere (e approssimative), 1 HSET con 1.000.000 di chiavi consuma fino a 10 volte meno memoria di 1.000.000 di chiavi con un valore ciascuna.
  2. Mantieni la dimensione HSET inferiore a hash-max-zipmap-entries e hash-max-zipmap-value valido se la memoria è l'obiettivo principale. Assicurati di capire quali hash-max-zipmap-entries e hash-max-zipmap-value significare. Inoltre, prenditi del tempo per leggere la ziplist.
  3. In realtà non vuoi gestire hash-max-zipmap-entries con oltre 10 milioni di chiavi; invece, dovresti suddividere un HSET in più slot. Ad esempio, imposti hash-max-zipmap-entries come 10.000. Quindi per memorizzare oltre 10 milioni di chiavi sono necessarie oltre 1000 chiavi HSET con 10.000 ciascuna. Come regola pratica:crc32(key) % maxHsets.
  4. Leggi le stringhe in redis e usa una lunghezza del nome KEY (in HSET) basata sulla gestione della memoria reale per questa struttura. In parole povere, mantenendo la lunghezza della chiave inferiore a 7 byte, si spendono 16 byte per chiave, ma una chiave da 8 byte spende 48 byte ciascuna. Come mai? Leggi le semplici stringhe dinamiche.

Può essere utile leggere su:

  • Ottimizzazione della memoria Redis (da sripathikrishnan)
  • Commenti sulla struttura interna della ziplist.
  • Memorizzazione di centinaia di milioni di semplici coppie chiave-valore in Redis (Instagram)