Todos los productos
Search
Centro de documentos

Tair (Redis® OSS-Compatible):Claves grandes y claves activas

Última actualización: Sep 03, 2026

Las claves grandes y las claves activas pueden degradar el rendimiento del servicio, provocar tiempos de espera en las solicitudes o incluso causar fallos en el sistema. Este tema describe cómo encontrar y optimizar rápidamente las claves grandes y activas. También analiza sus causas y efectos, y proporciona medidas preventivas para reducir su impacto en su negocio.

Paso 1: Encontrar rápidamente claves grandes y activas

Herramientas de la consola de Alibaba Cloud

Tair y Redis ofrecen las funciones Top Key Statistics y Offline Full Key Analysis en la consola para ayudarle a encontrar rápidamente claves grandes y activas.

Método

Límites

Descripción

Procedimiento

Top Key Statistics (Recomendado)

Esta función solo es compatible con Redis Open-Source Edition 5.0 o posterior, y con instancias de memoria optimizada y memoria persistente de Tair (Enterprise Edition).

  • Muestra información en tiempo real sobre las tres principales claves grandes y activas para cada estructura de datos en cada shard.

  • Permite consultar la información histórica de claves grandes y activas de los últimos cuatro días.

  1. Inicie sesión en la consola y vaya a la página Instances. En la barra de navegación superior, seleccione la región donde reside la instancia que desea gestionar. A continuación, busque la instancia y haga clic en su ID.

  2. En el panel de navegación izquierdo, haga clic en CloudDBA > Top Key Statistics o en Offline Key Analysis.

Offline Full Key Analysis

Esta función no es compatible con instancias basadas en disco.

  • Analiza de forma personalizada el archivo de copia de seguridad RDB para obtener información como el uso de memoria, la distribución y el tiempo de caducidad de las claves.

  • El análisis no se realiza en tiempo real y puede tardar mucho en archivos RDB grandes.

  • No permite analizar información de claves activas.

Si su instancia no admite estas funciones, utilice los siguientes métodos.

Otros métodos para encontrar claves grandes y activas

Método

Ventajas y desventajas

Descripción

Uso de los parámetros bigkeys, memkeys y hotkeys de redis-cli

  • Ventajas: Práctico, rápido y seguro.

  • Desventajas: Los resultados del análisis no son personalizables y pueden tener poca precisión u oportunidad. Este método recorre todas las claves de la instancia, lo que puede afectar al rendimiento.

Los parámetros bigkeys, memkeys y hotkeys de redis-cli recuperan estadísticas generales de claves y la principal clave grande o activa para cada estructura de datos.

Las diferencias son a continuación:

  • bigkeys: Estadísticas para claves grandes. Para colecciones o listas, devuelve el número de elementos.

  • memkeys: Estadísticas para claves grandes. Devuelve el tamaño de memoria ocupado por el valor de la clave.

  • hotkeys: Estadísticas para claves activas.

Estructuras de datos compatibles: STRING, LIST, HASH, SET, ZSET y STREAM.

Por ejemplo, el comando para bigkeys es redis-cli -h r-*.redis.rds.aliyuncs.com -a <password> --bigkeys.

Análisis de claves objetivo mediante comandos integrados

  • Ventajas: Impacto mínimo en los servicios en línea.

  • Desventajas: La longitud serializada devuelta de una clave no es igual a su longitud real en memoria. Por lo tanto, el resultado no es preciso y solo debe usarse como referencia.

Para claves de diferentes estructuras de datos, use los siguientes comandos de bajo riesgo para determinar si son claves grandes.

  • Tipo STRING: El comando STRLEN devuelve el número de bytes del valor para la clave correspondiente.

  • Tipo LIST: El comando LLEN devuelve la longitud de la lista para la clave correspondiente.

  • Tipo HASH: El comando HLEN devuelve el número de miembros para la clave correspondiente.

  • Tipo SET: El comando SCARD devuelve el número de miembros para la clave correspondiente.

  • Tipo ZSET: El comando ZCARD devuelve el número de miembros para la clave correspondiente.

  • Tipo STREAM: El comando XLEN devuelve el número de miembros para la clave correspondiente.

Nota

Los comandos DEBUG OBJECT y MEMORY USAGE consumen muchos recursos y tienen una complejidad temporal de O(N). Pueden bloquear la instancia, por lo que no se recomiendan.

Localización de claves activas en la capa de negocio

  • Ventajas: Localiza claves activas con precisión y rapidez.

  • Desventajas: Aumenta la complejidad del código de negocio y puede degradar ligeramente el rendimiento.

Agregue código en la capa de negocio para registrar el acceso a la instancia y realizar análisis asíncronos.

Uso de la herramienta redis-rdb-tools para análisis personalizado de claves grandes

  • Ventajas: Admite análisis personalizado sin impacto en los servicios en línea.

  • Desventajas: El análisis no se realiza en tiempo real y puede tardar mucho en archivos RDB grandes.

Redis-rdb-tools es una herramienta de código abierto escrita en Python que admite el análisis personalizado de archivos de instantánea RDB. Después de download the RDB file, analice el uso de memoria de todas las claves en la instancia y realice consultas flexibles según sea necesario.

Búsqueda de claves activas mediante el comando MONITOR

  • Ventajas: Práctico y seguro.

  • Desventajas: Consume recursos de CPU, memoria y red. Los resultados pueden no ser oportunos ni precisos.

El comando MONITOR imprime todas las solicitudes enviadas a la instancia, incluida la hora, la información del cliente, los comandos y la información de las claves.

En caso de emergencia, ejecute brevemente el comando MONITOR y guarde la salida en un archivo. Después de detener el comando MONITOR, analice las solicitudes en el archivo para identificar claves activas durante ese período.

Nota

Dado que el comando MONITOR puede degradar significativamente el rendimiento de la instancia, no utilice el comando MONITOR excepto en circunstancias especiales.

Paso 2: Optimizar claves grandes y activas

Claves grandes

Solución

Escenarios

Acciones recomendadas

Limpieza de datos caducados

Se ha acumulado una gran cantidad de datos caducados, como datos incrementales sin limpiar en un HASH.

Use el comando HSCAN junto con el comando HDEL para limpiar datos no válidos. Esto evita que la instancia se bloquee, lo cual puede ocurrir si limpia una gran cantidad de datos a la vez.

Compresión de claves grandes

Datos comprimibles como texto JSON y XML, incluidos registros y configuraciones.

  • Habilite la compresión durante la serialización, por ejemplo con GZIP o Snappy.

  • Utilice un protocolo de serialización binaria, como Protocol Buffers.

Nota

Las operaciones de compresión y descompresión consumen recursos adicionales de CPU y pueden afectar al rendimiento de procesamiento.

División de claves grandes

Estructuras de datos HASH, ZSET y otras a las que se accede frecuentemente, como tablas de clasificación.

  • Divida las claves según la lógica de negocio, por ejemplo por ID de usuario o rango de tiempo.

  • Emplee un diseño de clave de fragmentación, como user:1001:shard1 y user:1001:shard2.

La división de claves grandes puede prevenir eficazmente la dispersión de datos.

Descarga de claves grandes

Archivos grandes u objetos binarios grandes (BLOB) de tipo String.

Almacene datos inadecuados en otros sistemas de almacenamiento, como OSS, y elimínelos de la instancia.

  • Para Redis Open-Source Edition 4.0 y posterior: Utilice el comando UNLINK para eliminar de forma segura claves grandes o incluso extra grandes. Este comando limpia las claves de manera asíncrona para evitar el bloqueo del hilo principal.

  • Para versiones anteriores a Redis Open-Source Edition 4.0: Emplee el comando SCAN para recorrer y eliminar datos en lotes. Esto evita el bloqueo del hilo principal que puede causar la eliminación de muchas claves a la vez.

Claves activas

Solución

Escenarios

Acciones recomendadas

Replicación de claves activas en una arquitectura de clúster

Una clave activa se almacena completa en un solo shard y las solicitudes no se pueden distribuir migrando datos parciales.

Copie la clave activa y migre las réplicas a otros shards de datos. Por ejemplo, copie una clave activa llamada foo para crear tres claves idénticas llamadas foo2, foo3 y foo4. Migre estas tres claves a otros shards de datos para aliviar la presión sobre el único shard de datos que contiene la clave activa.

Nota

La desventaja de esta solución es que debe modificar su código para mantener varias réplicas, y es difícil garantizar la consistencia de los datos entre ellas. Por ejemplo, una operación de actualización debe sincronizarse en todas las réplicas. Utilice esta solución como medida temporal para mitigar problemas urgentes.

Enable read/write splitting

Cargas de trabajo con muchas lecturas y pocas escrituras

Si la carga de solicitudes de lectura sigue siendo alta después de habilitar esta función, agregue más nodos de solo lectura para aliviar aún más la carga.

Nota

En escenarios con volúmenes de solicitudes extremadamente altos, la sincronización primaria/secundaria tendrá inevitablemente latencia, lo que puede provocar la lectura de datos obsoletos. Por lo tanto, no habilite la división de lectura/escritura en escenarios con alta presión de lectura y escritura y requisitos estrictos de consistencia de datos.

Paso 3: Evitar que las claves grandes y activas afecten a su negocio

Causas de las claves grandes y activas

En Tair y Redis, la unidad mínima para la distribución de datos es una clave. Una sola clave se almacena en un shard de datos específico y no se divide. Factores como una planificación insuficiente del negocio, la acumulación de datos no válidos y aumentos repentinos en el volumen de acceso pueden provocar la generación de claves grandes y activas en una instancia. Algunos ejemplos incluyen a continuación:

Categoría

Causa

Clave grande

  • Uso de Tair y Redis en escenarios inadecuados, lo que puede resultar en valores de clave excesivamente grandes. Por ejemplo, usar una clave de tipo String para almacenar datos de archivos binarios grandes.

  • Planificación y diseño insuficientes antes de que el negocio entre en funcionamiento. Los miembros dentro de las claves no se dividen adecuadamente, lo que resulta en un número excesivo de miembros en algunas claves.

  • Falta de limpieza periódica de datos no válidos, lo que provoca que los miembros de las claves de tipo HASH aumenten continuamente.

  • Un fallo de código en el lado del consumidor de un negocio que utiliza claves de tipo LIST, lo que provoca que los miembros de la clave correspondiente solo aumenten.

Clave activa

  • Aumentos bruscos e inesperados en el volumen de acceso. Los ejemplos incluyen un producto que se vuelve viral repentinamente, una noticia de actualidad con tráfico disparado, un evento de un streamer en un canal en vivo que genera muchos "me gusta", o una batalla entre varios gremios en un juego que involucra a muchos jugadores en un área específica.

Efectos de las claves grandes y activas

Categoría

Efecto

Clave grande

  • Ralentiza la ejecución de comandos en el cliente.

  • Cuando la memoria de la instancia alcanza el límite de maxmemory, puede provocar el bloqueo de operaciones, la expulsión de claves importantes o incluso un error de falta de memoria (OOM).

  • En una arquitectura de clúster, el uso de memoria de un shard de datos supera con creces al de los demás, lo que impide un uso equilibrado de los recursos de memoria entre los shards.

  • La ejecución de solicitudes de lectura en una clave grande puede saturar el ancho de banda de red de la instancia, ralentizando sus propios servicios y afectando a los servicios relacionados.

  • Eliminar una clave grande puede bloquear fácilmente la base de datos primaria durante mucho tiempo, lo que podría desencadenar una interrupción de la sincronización o un failover primario/secundario.

Clave activa

  • Consume una gran cantidad de recursos de CPU y puede aumentar el uso del ancho de banda de red, lo que afecta a otras solicitudes y reduce el rendimiento general.

  • En una arquitectura de clúster, provoca una dispersión de acceso, donde un shard de datos recibe muchas solicitudes mientras otros están inactivos. Esto puede provocar problemas como el agotamiento del límite de conexiones para ese shard y el rechazo de nuevas solicitudes de conexión.

  • En escenarios de ventas flash, el volumen de solicitudes para la clave de inventario de un producto puede exceder la capacidad de procesamiento de la instancia, lo que provoca ventas excesivas.

  • Si la presión de solicitudes sobre una clave activa excede la capacidad de la instancia, puede causar fácilmente una ruptura de caché. Esto significa que muchas solicitudes se dirigen a la capa de almacenamiento backend, lo que provoca un aumento en el acceso al almacenamiento o incluso una falla, que a su vez afecta a otros servicios.

Estrategias de prevención

Estrategia

Descripción

Configure monitoring and alerts

Establezca umbrales de alerta razonables para métricas como uso de CPU, uso de memoria y Connections. Por ejemplo, configure una alerta para cuando el uso de memoria supere el 70 % o cuando la memoria crezca más del 20 % en una hora. Cuando se active una alerta, siga las instrucciones del Paso 1 y el Paso 2 de este tema para localizar y optimizar claves grandes y activas. Esto resuelve el problema antes de que afecte a su negocio.

Uso de Tair (Enterprise Edition) para evitar la limpieza de datos no válidos

Para escenarios que involucran claves grandes de tipo hash, Tair (Enterprise Edition) proporciona una estructura de datos mejorada, TairHash. Admite la configuración de un tiempo de caducidad y una versión para cada campo. Al usar TairHash correctamente, puede reducir significativamente la carga operativa, simplificar la complejidad del código de negocio y manejar eficazmente los problemas causados por claves grandes y activas.