Habilitar compresión con Redis

Habilitar compresión con Redis

El servidor de diccionario remoto, o redis para abreviar, es una base de datos en memoria de Lightning-Fast que almacena valores en pares de valor clave. Se utiliza principalmente como mecanismo de almacenamiento en caché para bases de datos como SQL y bases de datos de documentos.

Dado que Redis es una base de datos en memoria, el espacio utilizado es crítico y necesita ser monitoreado fuertemente. Una estrategia para mejorar y optimizar el rendimiento de la memoria para Redis es usar la compresión.

Por defecto, Redis no proporciona compresión para ningún dato almacenado. Por lo tanto, las técnicas de compresión se implementan en la aplicación.

Permítanos discutir algunas técnicas que puede usar para optimizar el rendimiento de la memoria en Redis.

Implementar un algoritmo de compresión

Dado que Redis no comprime los valores almacenados, debe hacerlo antes de almacenarlos. Hay varios algoritmos de compresión para comprimir cadenas antes de almacenarlas.

Tales algoritmos incluyen:

  1. Compresión de LZO - muy rápido y proporciona velocidades de descompresión más altas.
  2. LZ4 - eficiente en velocidad y muy fácil de integrar en aplicaciones.
  3. Rápido - Altas tasas de compresión/descompresión.

Use nombres de claves más cortos

Aunque los desarrolladores deberían favorecer los nombres más descriptivos sobre los cortos, el uso de la memoria puede dispararse rápidamente si tiene una extensa colección de claves en la base de datos.

Siempre considere usar nombres clave cortos para sus datos de valor clave para evitar esto.

Ejemplo:

Establecer este valor este_is_a_very_large_key_name

En su lugar, puede usar el nombre de la clave:

Establecer el valor l_key_name

Esto reduce el número de caracteres de Redis para almacenar su base de datos.

Comprimir nombres de campo

Se puede decir el mismo caso anterior sobre los nombres de campo. Y nuevamente, usar un nombre de campo más corto puede guardar algunos bytes o kilobytes de su memoria.

Por lo tanto, considere usar nombres de campo cortos para sus datos de Redis.

Un ejemplo es como se muestra:

127.0.0.1: 6379> hets user_info ID 1 First Name Moes LastName K Country "Estados Unidos de América"

Aquí, podemos guardar algo de memoria refactorizando los nombres de campo como:

Hets use_info id 1 fname moes lname country us EE. UU

Esto comprime los nombres de campo y los valores.

Usar lista en lugar de un hash

Un hash se compone de nombres de campo y valores correspondientes. Aunque este no es un problema importante, puede ser problemático cuando miles de tipos de hash entran en juego.

Para resolver esto, puede optar por una lista como se muestra:

Hets use_info id 1 fname moes lname country us EE. UU

Puede convertir el hash anterior en una lista como:

Lpush ["fname", "moes", "lname", "k", "país", "nosotros"]]

Evite los guiones dinámicos de lua

Para guardar aún más memoria, evite usar scripts de lua dinámicos que hacen que el caché crezca. Cuantos más scripts cargue, más consume mucha memoria.

Habilitar la compresión de la lista

Como se mencionó, Redis no comprime ningún valor almacenado en él. Esto incluye elementos dentro de una lista. Para valores de lista cortos, esto no es un problema. Sin embargo, en listas largas, puede ser beneficioso permitir la compresión.

En el Redis.archivo conf, localizar la línea:

sudo gato/etc/redis/redis.conf | Grep List-Compress
List-Compress-Depth 0 // cambia este valor

Cambie el valor de la lista de compresas de lista a:

  1. 1 - comprime cada nodo de lista, excepto la cabeza y la cola.
  2. 2 - nunca comprimir la cabeza o la cabeza-> o cola o cola-> anterior
  3. 3 - Inicie la compresión después de la cabeza-> Siguiente y la cola->-anterior

Actualice su versión de Redis

Otro paso que puede tomar para mejorar el uso de la memoria en su servidor Redis es actualizar su versión de Redis.

Al escribir este tutorial, la versión 4.0 (último) viene con las siguientes características.

Clausura

Esta guía analiza varios métodos y técnicas que puede usar para optimizar el uso de la memoria en su clúster Redis. Sin embargo, tenga en cuenta que no todas las formas están 100% garantizadas.

Gracias por leer, nos vemos en el próximo!!