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.
Resolución de Problemas Relacionados con la Memoria
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:
- set key_meaningOfLife "Food"
Luego, verifica la memoria con memory usage
:
- 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
:
- 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 Redistotal.asignado
: El número total de bytes asignados por Redisinicio.asignado
: El número inicial de bytes consumidos por Redis al iniciarregistro.replica
: El tamaño del registro de replicación, en bytesclientes.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ónclientes.normales
: El tamaño total de todos los gastos generales de clientesaof.buffer
: El tamaño total de los búferes actuales y de reescritura del archivo solo de adicióndb.0
: Los gastos generales de los diccionarios principal y de expiración para cada base de datos en uso en el servidor, informados en bytesgastos.totales
: La suma de todos los gastos utilizados para gestionar el espacio de claves de Rediscantidad.claves
: El número total de claves almacenadas en todas las bases de datos del servidorbytes-por-clave
: La proporción del uso neto de memoria del servidor ycantidad.claves
bytes.conjunto.datos
: El tamaño del conjunto de datos, en bytesporcentaje.conjunto.datos
: El porcentaje del uso neto de memoria de Redis ocupado porbytes.conjunto.datos
porcentaje.pico
: El porcentaje depico.asignado
tomado detotal.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:
- 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
:
- 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:
- monitor
OutputOK
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:
- 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
:
- 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:
- keys pattern
Se admiten las siguientes variables de estilo glob:
?
es un comodín que representa cualquier carácter, por lo ques?mmy
coincide consammy
,sommy
ysqmmy
*
es un comodín que representa cualquier cantidad de caracteres, incluidos ninguno en absoluto, por lo quesa*y
coincide consammy
,say
,sammmmmmy
ysalmony
- Puedes especificar dos o más caracteres que el patrón puede incluir al envolverlos entre corchetes, por lo que
s[ai]mmy
coincidirá consammy
ysimmy
, pero no consummy
- 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 ques[^oi]mmy
coincidirá consammy
ysxmmy
, pero no consommy
osimmy
- 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á consammy
,skmmy
ysommy
, pero no consrmmy
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