Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Redis — melhor maneira de armazenar um mapa grande (dicionário)


Sim, como diz Itamar Haber, você deve dar uma olhada neste guia de otimização de memória redis. Mas você também deve ter em mente mais algumas coisas:
  1. Prefira HSET a KEYS. O Redis consome muita memória apenas no gerenciamento de espaço de chave. Em termos simples (e aproximados), 1 HSET com 1.000.000 chaves consome até 10x menos memória do que 1.000.000 chaves com um valor cada.
  2. Mantenha o tamanho HSET menor que hash-max-zipmap-entries e hash-max-zipmap-value válido se a memória for o alvo principal. Certifique-se de entender o que hash-max-zipmap-entries e hash-max-zipmap-value quer dizer. Além disso, reserve um tempo para ler sobre a lista zip.
  3. Na verdade, você não quer lidar com hash-max-zipmap-entries com 10M+ teclas; em vez disso, você deve dividir um HSET em vários slots. Por exemplo, você define hash-max-zipmap-entries como 10.000. Portanto, para armazenar mais de 10 milhões de chaves, você precisa de mais de 1.000 chaves HSET com 10.000 cada. Como regra geral:crc32(key) % maxHsets.
  4. Leia sobre strings em redis e use um comprimento de nome KEY (em HSET) baseado no gerenciamento de memória real para essa estrutura. Em termos simples, mantendo o comprimento da chave abaixo de 7 bytes, você gasta 16 bytes por chave, mas uma chave de 8 bytes gasta 48 bytes cada. Por quê? Leia sobre strings dinâmicas simples.

Pode ser útil ler sobre:
  • Otimização de memória Redis (de sripathikrishnan)
  • Comentários sobre a estrutura interna da lista zip.
  • Armazenando centenas de milhões de pares de valores-chave simples no Redis (Instagram)