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

Confronto delle prestazioni dell'utilizzo di hash Redis rispetto a molte chiavi

Scegliendo hash su string ha molti vantaggi e alcuni svantaggi a seconda dei casi d'uso. Se hai intenzione di scegliere hash, è meglio progettare il tuo oggetto json come campi e valori hash come;

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"

Ecco i vantaggi di hash sulle stringhe quando si esegue una corretta modellazione dei dati.

  • Per quanto riguarda le prestazioni, la maggior parte dei comandi sia per le stringhe che per l'hash hanno la stessa complessità.
  • Accesso/aggiorna/cancella i singoli campi json sugli hash più facilmente rispetto alle stringhe. Non è necessario ottenere l'intera stringa, decodificarla, apportare modifiche e reimpostarla. Puoi usare HDEL, HSET o HGET per queste operazioni senza ottenere l'intero oggetto.
  • Se la dimensione del tuo oggetto stringa aumenta, soffrirai di rete e larghezza di banda durante il trasferimento (get/set) dell'intero oggetto. Come indicato nella documentazione

La velocità della RAM e la larghezza di banda della memoria sembrano meno critiche per le prestazioni globali, specialmente per i piccoli oggetti. Tuttavia, per oggetti di grandi dimensioni (>10 KB), potrebbe diventare evidente.

  • Gli hash sono più compatibili con la memoria rispetto alle stringhe se crei un buon benchmark per progettare le dimensioni dei tuoi dati. Come affermato nella documentazione e in un caso d'uso di esempio di instagram engineering, potresti ottenere un enorme vantaggio con la codifica speciale.

Hash, elenchi, insiemi composti solo da numeri interi e insiemi ordinati, quando sono inferiori a un determinato numero di elementi e fino a una dimensione massima dell'elemento, sono codificati in un modo molto efficiente in termini di memoria che utilizza fino a 10 volte meno memoria (con 5 tempo meno memoria utilizzata è il risparmio medio).

D'altra parte, a seconda dei casi d'uso;

  • ziplist non è gratis, è un compromesso tra memoria e cpu.
  • Non puoi far scadere parzialmente i campi hash. Se dividi in più stringhe, puoi EXPIRE ma negli hash solo la chiave di primo livello può essere scaduta con tutti i valori.