Redis - Particionamento
O particionamento é o processo de dividir seus dados em várias instâncias do Redis, de forma que cada instância contenha apenas um subconjunto de suas chaves.
Benefícios do particionamento
Ele permite bancos de dados muito maiores, usando a soma da memória de muitos computadores. Sem o particionamento, você fica limitado à quantidade de memória que um único computador pode suportar.
Ele permite dimensionar o poder computacional para vários núcleos e vários computadores, e a largura de banda da rede para vários computadores e adaptadores de rede.
Desvantagens do particionamento
Normalmente, não há suporte para operações envolvendo várias chaves. Por exemplo, você não pode realizar a interseção entre dois conjuntos se eles estiverem armazenados nas chaves mapeadas para diferentes instâncias do Redis.
As transações do Redis envolvendo várias chaves não podem ser usadas.
O detalhamento do particionamento é a chave, portanto, não é possível fragmentar um conjunto de dados com uma única chave enorme, como um conjunto classificado muito grande.
Quando o particionamento é usado, o tratamento de dados é mais complexo. Por exemplo, você precisa lidar com vários arquivos RDB / AOF e, para obter um backup de seus dados, precisa agregar os arquivos de persistência de várias instâncias e hosts.
Adicionar e remover a capacidade pode ser complexo. Por exemplo, o Redis Cluster oferece suporte a rebalanceamento de dados principalmente transparente com a capacidade de adicionar e remover nós em tempo de execução. No entanto, outros sistemas, como particionamento do lado do cliente e proxies, não oferecem suporte a esse recurso. Uma técnica chamadaPresharding ajuda nesse sentido.
Tipos de particionamento
Existem dois tipos de particionamento disponíveis no Redis. Suponha que temos quatro instâncias do Redis, R0, R1, R2, R3 e muitas chaves representando usuários como usuário: 1, usuário: 2, ... e assim por diante.
Particionamento de intervalo
O particionamento de intervalo é realizado mapeando intervalos de objetos em instâncias específicas do Redis. Suponha que em nosso exemplo, os usuários de ID 0 a ID 10000 irão para a instância R0, enquanto os usuários de ID 10001 a ID 20000 irão para a instância R1 e assim por diante.
Particionamento Hash
Nesse tipo de particionamento, uma função hash (por exemplo, função de módulo) é usada para converter a chave em um número e, em seguida, os dados são armazenados em instâncias diferentes do Redis.