Como calcular o número de registros possíveis no Redis por 32 GB de memória?

2

Na minha empresa estamos falando sobre a possibilidade de construir uma parte do nosso backend no Redis ao invés do mongodb, mas queremos calcular quantos registros poderemos armazenar em um servidor com 32G. Embora eu saiba que isso depende totalmente do tamanho da chave e do valor, existe alguma maneira de calcular quantos itens poderemos armazenar se nossos elementos forem todos como este:

key: Hexadecimal with 12 bytes.
value: String with 20 bytes.
    
por miduga 22.06.2015 / 15:53

1 resposta

3

Supondo que você tenha 32 GB de memória alocada para o Redis e outra memória disponível para os recursos do sistema, calcule o número de entradas que pode armazenar. No entanto, tenha em mente que isso é extremamente generalizado, pois sempre há algum tipo de sobrecarga. Independentemente disso, se você olhar para o número puro de entradas de uma perspectiva matemática, poderá armazenar aproximadamente um bilhão de entradas com 32 GB de RAM.

1 GB = 1024MB
1 MB = 1024KB
1 KB = 1024B

1GB = 1,073,741,824B
32GB = 34,359,738,368B

size = 12B + 20B = 32B

number_of_entries = (available_size / size_of_entry)
                  = (34,359,738,368B / 32B)
                  = 1,073,741,824

Como eu disse antes, é muito ruim supor que não há nenhum tipo de sobrecarga. Veja abaixo a FAQ de Redis. Sem conhecer mais detalhes do seu ambiente, seria impossível fornecer números mais precisos.

Qual é a pegada de memória do Redis?

Para dar alguns exemplos (todos obtidos usando instâncias de 64 bits): Uma instância vazia usa ~ 1MB de memória. 1 milhão de pequenas chaves - > Pares String Value usam ~ 100MB de memória. 1 milhão de chaves - > O valor de hash, representando um objeto com 5 campos, usa ~ 200 MB de memória. Para testar seu caso de uso, é trivial usar o utilitário redis-benchmark para gerar conjuntos de dados aleatórios e verificar com o comando INFO memory o espaço utilizado. Os sistemas de 64 bits usarão consideravelmente mais memória do que os sistemas de 32 bits para armazenar as mesmas chaves, especialmente se as chaves e valores forem pequenos, porque os ponteiros levam 8 bytes em sistemas de 64 bits. Mas é claro que a vantagem é que você pode ter muita memória em sistemas de 64 bits, portanto, para executar grandes servidores Redis, um sistema de 64 bits é mais ou menos necessário. A alternativa é sharding.

    
por 22.06.2015 / 16:00