Redis - Partizionamento
Il partizionamento è il processo di suddivisione dei dati in più istanze Redis, in modo che ogni istanza conterrà solo un sottoinsieme delle tue chiavi.
Vantaggi del partizionamento
Consente database molto più grandi, utilizzando la somma della memoria di molti computer. Senza il partizionamento sei limitato alla quantità di memoria che un singolo computer può supportare.
Consente di scalare la potenza di calcolo su più core e più computer e la larghezza di banda di rete su più computer e adattatori di rete.
Svantaggi del partizionamento
Le operazioni che coinvolgono più chiavi in genere non sono supportate. Ad esempio, non è possibile eseguire l'intersezione tra due set se sono archiviati nelle chiavi mappate a diverse istanze di Redis.
Non è possibile utilizzare transazioni Redis che coinvolgono più chiavi.
Il granulato di partizionamento è la chiave, quindi non è possibile partizionare un set di dati con una singola chiave enorme come un set ordinato molto grande.
Quando si utilizza il partizionamento, la gestione dei dati è più complessa. Ad esempio, devi gestire più file RDB / AOF e per ottenere un backup dei tuoi dati devi aggregare i file di persistenza da più istanze e host.
Aggiungere e rimuovere la capacità può essere complesso. Ad esempio, Redis Cluster supporta il ribilanciamento dei dati per lo più trasparente con la possibilità di aggiungere e rimuovere nodi in fase di esecuzione. Tuttavia, altri sistemi come il partizionamento lato client e i proxy non supportano questa funzionalità. Una tecnica chiamataPresharding aiuta in questo senso.
Tipi di partizionamento
Esistono due tipi di partizionamento disponibili in Redis. Supponiamo di avere quattro istanze Redis, R0, R1, R2, R3 e molte chiavi che rappresentano utenti come user: 1, user: 2, ... e così via.
Partizionamento dell'intervallo
Il partizionamento degli intervalli viene eseguito mappando gli intervalli di oggetti in istanze Redis specifiche. Supponiamo che nel nostro esempio gli utenti dall'ID 0 all'ID 10000 entrino nell'istanza R0, mentre gli utenti dall'ID 10001 all'ID 20000 entrino nell'istanza R1 e così via.
Partizionamento hash
In questo tipo di partizionamento, una funzione hash (ad esempio la funzione modulo) viene utilizzata per convertire la chiave in un numero e quindi i dati vengono memorizzati in istanze di Redis differenti.