Cómo solucionar problemas en Redis

Introducción

Redis es un almacén de datos de clave-valor en memoria de código abierto. Viene con varios comandos que pueden ayudar con la resolución de problemas y la depuración de problemas. Debido a la naturaleza de Redis como un almacén de datos de clave-valor en memoria, muchos de estos comandos se centran en la gestión de la memoria, pero hay otros que son valiosos para proporcionar una visión general del estado de su servidor Redis. Este tutorial proporcionará detalles sobre cómo utilizar algunos de estos comandos para ayudar a diagnosticar y resolver problemas que pueda encontrar al utilizar Redis.

Cómo Utilizar Esta Guía

Esta guía está escrita como una hoja de trucos con ejemplos autónomos. Le animamos a ir a cualquier sección que sea relevante para la tarea que está intentando completar.

Los comandos mostrados en esta guía fueron probados en un servidor Ubuntu 22.04 que ejecuta la versión de Redis 6.0.16. Para configurar un entorno similar, puede seguir el Paso 1 de nuestra guía sobre Cómo Instalar y Asegurar Redis en Ubuntu 22.04. Demostraremos cómo se comportan estos comandos ejecutándolos con redis-cli, la interfaz de línea de comandos de Redis. Si está utilizando una interfaz de Redis diferente — como Redli, por ejemplo — la salida exacta de ciertos comandos puede diferir.

Alternativamente, podrías provisionar una instancia de base de datos Redis administrada para probar estos comandos, pero dependiendo del nivel de control permitido por tu proveedor de base de datos, algunos comandos en esta guía pueden no funcionar como se describe. Para aprovisionar una Base de Datos Administrada de DigitalOcean, sigue nuestra documentación del producto de Base de Datos Administradas. Luego, debes instalar Redli o configurar un túnel TLS para poder conectarte a la Base de Datos Administrada a través de TLS.

memory usage te indica cuánta memoria está siendo utilizada actualmente por una sola clave. Toma el nombre de una clave como argumento y muestra la cantidad de bytes que utiliza. Primero, establece una variable de ejemplo:

  1. set key_meaningOfLife "Food"

Luego, verifica la memoria con memory usage:

  1. memory usage key_meaningOfLife
Output
(integer) 88

Para tener una comprensión más general de cómo tu servidor Redis está utilizando la memoria, puedes ejecutar el comando memory stats:

  1. memory stats

Este comando muestra una serie de métricas relacionadas con la memoria y sus valores. Las siguientes son las métricas reportadas por memory stats:

  • pico.asignado: El número máximo de bytes consumidos por Redis
  • total.asignado: El número total de bytes asignados por Redis
  • inicio.asignado: El número inicial de bytes consumidos por Redis al iniciar
  • registro.replica: El tamaño del registro de replicación, en bytes
  • clientes.esclavos: El tamaño total de todos los gastos generales de réplicas, es decir, los búferes de salida y consulta y los contextos de conexión
  • clientes.normales: El tamaño total de todos los gastos generales de clientes
  • aof.buffer: El tamaño total de los búferes actuales y de reescritura del archivo solo de adición
  • db.0: Los gastos generales de los diccionarios principal y de expiración para cada base de datos en uso en el servidor, informados en bytes
  • gastos.totales: La suma de todos los gastos utilizados para gestionar el espacio de claves de Redis
  • cantidad.claves: El número total de claves almacenadas en todas las bases de datos del servidor
  • bytes-por-clave: La proporción del uso neto de memoria del servidor y cantidad.claves
  • bytes.conjunto.datos: El tamaño del conjunto de datos, en bytes
  • porcentaje.conjunto.datos: El porcentaje del uso neto de memoria de Redis ocupado por bytes.conjunto.datos
  • porcentaje.pico: El porcentaje de pico.asignado tomado de total.asignado
  • fragmentación: La proporción de la cantidad de memoria actualmente en uso dividida por la memoria física que Redis está utilizando en realidad.

memory malloc-stats proporciona un informe de estadísticas internas de jemalloc, el asignador de memoria utilizado por Redis en sistemas Linux:

  1. memory malloc-stats

Si parece que estás teniendo problemas relacionados con la memoria, pero analizar la salida de los comandos anteriores resulta poco útil, puedes intentar ejecutar memory doctor:

  1. memory doctor

Esta función mostrará cualquier problema de consumo de memoria que pueda encontrar y sugerir soluciones potenciales.

Obteniendo Información General sobre tu Instancia de Redis

A debugging command that isn’t directly related to memory management is monitor. This command allows you to review a constant stream of every command processed by the Redis server:

  1. monitor
Output
OK 1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared" 1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"

Otro comando útil para depurar es info, que devuelve varios bloques de información y estadísticas sobre el servidor:

  1. info
Output
# Server redis_version:6.0.16 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:a3fdef44459b3ad6 redis_mode:standalone os:Linux 5.15.0-41-generic x86_64 . . .

Este comando devuelve mucha información. Si solo quieres devolver un bloque de información, puedes especificarlo como argumento para info:

  1. info CPU
Output
# CPU used_cpu_sys:173.16 used_cpu_user:70.89 used_cpu_sys_children:0.01 used_cpu_user_children:0.04

Ten en cuenta que la información devuelta por el comando info dependerá de la versión de Redis que estés utilizando.

Usando el Comando keys

El comando keys es útil en casos en los que has olvidado el nombre de una clave, o quizás la has creado pero has escrito su nombre incorrectamente. keys busca claves que coincidan con un patrón:

  1. keys pattern

Se admiten las siguientes variables de estilo glob:

  • ? es un comodín que representa cualquier carácter, por lo que s?mmy coincide con sammy, sommy y sqmmy
  • * es un comodín que representa cualquier cantidad de caracteres, incluidos ninguno en absoluto, por lo que sa*y coincide con sammy, say, sammmmmmy y salmony
  • Puedes especificar dos o más caracteres que el patrón puede incluir al envolverlos entre corchetes, por lo que s[ai]mmy coincidirá con sammy y simmy, pero no con summy
  • Para establecer un comodín que ignore una o más letras, envuélvelas entre corchetes y antecédelas con un acento circunflejo (^), por lo que s[^oi]mmy coincidirá con sammy y sxmmy, pero no con sommy o simmy
  • Para establecer un comodín que incluya un rango de letras, separa el inicio y el final del rango con un guion y envuélvelo entre corchetes, por lo que s[a-o]mmy coincidirá con sammy, skmmy y sommy, pero no con srmmy

Advertencia: La documentación de Redis advierte que keys casi nunca debe usarse en un entorno de producción, ya que puede tener un impacto negativo importante en el rendimiento.

Conclusión

Esta guía detalla una serie de comandos que son útiles para la solución de problemas y la resolución de problemas que uno podría encontrar al trabajar con Redis. Si hay otros comandos, argumentos o procedimientos relacionados que le gustaría aprender en esta guía, por favor pregunte o haga sugerencias en los comentarios.

Para obtener más información sobre los comandos de Redis, consulte nuestra serie de tutoriales sobre Cómo Administrar una Base de Datos Redis.

Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis