tutorial labs commands aws redis

labs - redis vs mongodb



Redis: Mostrar el tamaño/tamaño de la base de datos para las claves (7)

Así que mi solución a mi propio problema: después de jugar con redis-cli un poco más, descubrí que DEBUG OBJECT <key> revela algo así como la serializedlength de la clave, que de hecho era algo que estaba buscando ...

Para una base de datos completa necesita agregar todos los valores para KEYS * que no debería ser demasiado difícil con un lenguaje de scripting de su elección ...

Lo malo es que redis.io realmente no tiene mucha información sobre DEBUG OBJECT .

Mi instancia de redis parece crecer mucho y me gustaría saber cuál de las múltiples bases de datos que tengo consume la memoria. El comando INFO Redis solo me muestra el tamaño total y el número de claves por base de datos que no me da mucha información ... Así que cualquier herramienta / idea que me brinde más información cuando esté monitoreando el servidor redis sería apreciada.

La documentación de Redis no me muestra ningún comando que pueda devolver la memoria consumida de ciertas teclas, así que supongo que si algún código con errores escribiría una gran cantidad de "basura" para redis, esto podría ser muy difícil de encontrar ...


Echa un vistazo a este proyecto que muestra algunas estadísticas interesantes sobre espacios de teclado basados ​​en expresiones regulares y prefijos. Utiliza el comando DEBUG OBJECT y escanea el db, identifica grupos de claves y estima el porcentaje de espacio que están ocupando.

https://github.com/snmaynard/redis-audit

La salida se ve así:

Summary ---------------------------------------------------+--------------+-------------------+--------------------------------------------------- Key | Memory Usage | Expiry Proportion | Last Access Time ---------------------------------------------------+--------------+-------------------+--------------------------------------------------- notification_3109439 | 88.14% | 0.0% | 2 minutes user_profile_3897016 | 11.86% | 99.98% | 20 seconds ---------------------------------------------------+--------------+-------------------+---------------------------------------------------

O esta esta: https://github.com/sripathikrishnan/redis-rdb-tools que hace un análisis completo de todo el espacio de claves mediante el análisis de un archivo dump.rdb fuera de línea. Este también funciona bien. Puede darle el tamaño promedio / mínimo / máximo para las entradas en su base de datos, e incluso lo hará en función de un prefijo.


Es posible que le resulte muy útil muestrear claves Redis y agruparlas por tipo. Salvatore ha escrito una herramienta llamada redis-sampler que emite alrededor de 10000 comandos RANDOMKEY seguidos por un TYPE en las claves recuperadas. En cuestión de segundos, o minutos, debería obtener una vista bastante precisa de la distribución de los tipos de clave.

He escrito una extensión (lamentablemente no en ningún lado de código abierto porque está relacionada con el trabajo), que agrega un poco de introspección de nombres de teclas a través de expresiones regulares que le dan una idea de qué tipo de teclas de aplicación (de acuerdo con la estructura de nombres que tenga usando), se almacenan en Redis. Combinado con el resultado más general de Redis-Sampler, esto debería darle una muy buena idea de lo que está sucediendo.


La solución de los comentarios merece su propia respuesta:

redis-cli --bigkeys



Quizás puedas hacer algo de introspección en el archivo db. El protocolo es relativamente simple (aunque no está bien documentado), por lo que podría escribir un analizador para que determine qué teclas individuales ocupan mucho espacio.

Nuevas sugerencias

¿Has intentado usar MONITOR para ver lo que se está escribiendo, en vivo? Tal vez puedas encontrar el problema con los datos en movimiento.


MEMORY USAGE key comando de MEMORY USAGE key le da la cantidad de bytes que una clave y su valor requieren para ser almacenados en la RAM.

El uso informado es el total de asignaciones de memoria para datos y gastos generales administrativos que una clave requiere su valor (documentación fuente de redis)