Ativar compressão com redis

Ativar compressão com redis

Servidor de dicionário remoto, ou redis, para curta, é um banco de dados de memória de raio-de-relâmpago que armazena valores em pares de valor-chave. É usado principalmente como mecanismo de cache para bancos de dados, como SQL e bancos de dados de documentos.

Como Redis é um banco de dados de memória, o espaço usado é crítico e precisa ser fortemente monitorado. Uma estratégia para melhorar e otimizar o desempenho da memória para Redis é usar a compactação.

Por padrão, o Redis não fornece compactação para nenhum dado armazenado. Portanto, as técnicas de compressão são implementadas no aplicativo.

Vamos discutir algumas técnicas que você pode usar para otimizar o desempenho da memória em Redis.

Implementar um algoritmo de compressão

Como Redis não comprime os valores armazenados, você deve fazê -lo antes de armazená -los. Existem vários algoritmos de compressão para compactar strings antes de armazená -los.

Tais algoritmos incluem:

  1. Compressão LZO - muito rápido e fornece velocidades de descompressão mais altas.
  2. LZ4 - eficiente em velocidade e muito fácil de integrar em aplicativos.
  3. Snappy - altas taxas de compressão/descompressão.

Use nomes de chave mais curtos

Embora os desenvolvedores devam favorecer nomes mais descritivos em vez de curtos, o uso da memória pode disparar rapidamente se você tiver uma extensa coleção de chaves no banco de dados.

Sempre considere usar nomes de chave curtos para seus dados de valor-chave para evitar isso.

Exemplo:

Defina this_is_a_very_large_key_name Valor

Em vez disso, você pode usar o nome da chave:

Definir L_KEY_NAME VALOR

Isso reduz o número de caracteres de Redis para armazenar seu banco de dados.

Compressa nomes de campo

O mesmo caso acima pode ser dito sobre os nomes de campo. E novamente, usando um nome de campo mais curto pode salvar alguns bytes ou kilobytes de sua memória.

Portanto, considere usar nomes de campo curtos para seus dados Redis.

Um exemplo é como mostrado:

127.0.0.1: 6379> hset user_info ID 1 FirstName Moes LastName K Country "Estados Unidos da América"

Aqui, podemos salvar alguma memória refatorando os nomes de campo como:

Hset user_info id 1 fname moes lname country

Isso comprime os nomes de campo e os valores.

Use a lista em vez de um hash

Um hash é composto por nomes de campo e valores correspondentes. Embora isso não seja um problema significativo, pode ser problemático quando milhares de tipos de hash entram em jogo.

Para resolver isso, você pode optar por uma lista como mostrado:

Hset user_info id 1 fname moes lname country

Você pode converter o hash acima em uma lista como:

Lpush ["fname", "moes", "lname", "k", "country", "nós"]

Evite scripts dinâmicos da Lua

Para economizar ainda mais memória, evite usar scripts dinâmicos da Lua que fazem com que o cache cresça. Quanto mais scripts você carrega, mais você consome muita memória.

Ativar compressão da lista

Como mencionado, Redis não comprime nenhum valores armazenados nele. Isso inclui elementos dentro de uma lista. Para valores de lista curta, isso dificilmente é um problema. No entanto, em longas listas, pode ser benéfico ativar a compactação.

No Redis.arquivo conf, localize a linha:

sudo gato/etc/redis/redis.conf | Grep List-Compress
Lista-compressa de profundidade 0 // Alterar este valor

Altere o valor da profundidade da lista de listas para:

  1. 1 - comprime cada nó de lista, exceto a cabeça e a cauda.
  2. 2 - nunca compacte a cabeça ou a cabeça-> ou cauda ou cauda-> prev
  3. 3 - Inicie a compressão após a cabeça-> a seguir e a cauda->-Anterior

Atualize sua versão Redis

Outra etapa que você pode dar para melhorar o uso da memória em seu servidor Redis é atualizar sua versão Redis.

Até escrever este tutorial, versão 4.0 (mais recente) vem com os seguintes recursos.

Fechamento

Este guia discute vários métodos e técnicas que você pode usar para otimizar o uso da memória em seu cluster Redis. No entanto, lembre -se de que nem todas as formas são 100% garantidas.

Obrigado pela leitura, vejo você no próximo!!