En esta página, se proporciona orientación sobre el uso óptimo de Memorystore para Redis. También se muestran posibles problemas que debes evitar.
Para obtener una lista de situaciones de solución de problemas, consulta Solución de problemas.
Exportación de RDB
Cuando exportes una copia de seguridad de RDB, usa la siguiente guía:
- Exporta durante un período de tasa de escritura baja.
- Si estás exportando durante un período de alta tasa de escritura, configura
maxmemorytemporalmente al 50% de la capacidad de la instancia a fin de proporcionar suficiente sobrecarga para una operación exitosa.
Operaciones que consumen muchos recursos
En las instancias de Redis de nivel Estándar, las siguientes operaciones usan memoria adicional durante la operación:
- Actualización de la versión
- Escalamiento vertical horizontal o vertical
- Conmutación por error manual
- Importaciones/Exportaciones
La actualización de versiones, el escalamiento y la conmutación por error manual utilizan memoria adicional (para instancias de nivel Estándar) debido a la replicación. Estas operaciones siguen el proceso de replicación descrito en Comportamiento de actualización de instancias de nivel Estándar.
Las operaciones de importación y exportación requieren memoria adicional debido al proceso bifurcado de Redis y la administración de datos copy-on-write (copiar al escribir) asociados con estas operaciones.
Para mitigar las desventajas de las operaciones que usan muchos recursos, debes cumplir con lo siguiente:
- Reduce la configuración de maxmemory al 80% de la capacidad de la instancia por el tiempo que dure la operación. Esto proporciona una sobrecarga suficiente para que una operación se realice correctamente.
- Supervisa la métrica de proporción de uso de memoria del sistema y asegúrate de que esté por debajo del 80% antes de ejecutar una de estas operaciones.
- Ejecuta estas operaciones durante períodos de poco tráfico de instancia (como la noche, el fin de semana, etc.).
- Obtén una lógica de reintento con la retirada exponencial en su lugar antes de ejecutar estas operaciones.
Operaciones y situaciones que requieren un reintento de conexión
Las siguientes operaciones y situaciones interrumpen la conexión de red entre tu red y la instancia de Redis:
- Actualización de la versión
- Escalamiento vertical horizontal o vertical
- Importación
- Conmutación por error manual
- Mantenimiento del sistema
- Rotación de la autoridad certificada para instancias de Redis que tengan habilitada la encriptación en tránsito
- Conmutación por error de emergencia
Estas operaciones modifican tu instancia, lo que requiere una desconexión temporal. Debes tener una lógica de reintento con retirada exponencial antes de ejecutar estas operaciones para que la aplicación se vuelva a conectar de manera automática y siga funcionando normalmente.
Mantenimiento de rutina
Las instancias de Memorystore para Redis se someten a mantenimiento de forma periódica. Para conocer más detalles, consulta la política de mantenimiento de Memorystore para Redis maintenance policy.
Implementa las siguientes prácticas recomendadas para estar preparado para el mantenimiento de rutina:
- Establece un período de mantenimiento para cuando puedan ocurrir las actualizaciones de mantenimiento.
- Programa períodos de mantenimiento para momentos de poco tráfico de instancias y suficiente sobrecarga de memoria. Para obtener más información, consulta Impactos de las actualizaciones de mantenimiento.
- Activa las notificaciones de períodos de mantenimiento para alertarte sobre el próximo mantenimiento.
- Obtén una lógica de reintento con la retirada exponencial en su lugar.
- En el caso de las instancias de nivel Estándar, puedes simular un evento de mantenimiento mediante la conmutación por error manual para ver cómo afecta a tu aplicación la conmutación por error causada por el mantenimiento.
- En el caso de las instancias de nivel Básico, puedes simular el impacto de una actualización de mantenimiento escalando la instancia de forma temporal a un tamaño mayor. Después de observar el impacto, puedes volver a la escala original.
Administración de la memoria
La administración de memoria puede ser un desafío debido a la conocida fragmentación de memoria
que se produce con Redis de código abierto. Recomendamos reducir la configuración de maxmemory para que tu instancia te asigne una sobrecarga en caso de que haya una alta demanda de memoria.
La mejor manera de supervisar la presión sobre la memoria en tu instancia de Memorystore es con la métrica de proporción de uso de memoria del sistema. Para obtener una guía detallada sobre cómo administrar la memoria en Memorystore para Redis, consulta Prácticas recomendadas de administración de memoria.
Administra conexiones inactivas
Con el tiempo, es posible que veas que aumenta la cantidad de conexiones a tu instancia de Memorystore si las conexiones no se terminan de forma adecuada. Esto puede
tener implicaciones negativas en el rendimiento, en especial si usas la encriptación en tránsito, que impone límites máximos de conexiones
según tu nivel de capacidad. Para mitigar esto, te recomendamos que utilices el
timeout parámetro de configuración de Redis
que te permite establecer la cantidad de segundos antes de que se terminen
automáticamente las conexiones inactivas del cliente.
Nombres de recursos de Transparencia de acceso
No se deben almacenar datos sensibles en los nombres de recursos de Memorystore para Redis. Por nombres de recursos, nos referimos a los nombres de instancias de Memorystore para Redis y a los metadatos de instancias, como las etiquetas. No se garantiza que los datos almacenados en los nombres de recursos estén protegidos por la Google Cloud Transparencia de acceso y pueden entrar en conflicto con los requisitos de cumplimiento de la Transparencia de acceso de tu organización.
Se requiere un conector de Acceso a VPC sin servidores para algunos entornos sin servidores
Algunos entornos sin servidores requieren un conector de Acceso a VPC sin servidores para conectarse a Memorystore para Redis. Configura el conector de Acceso a VPC sin servidores para tu proyecto si deseas conectarte mediante uno de estos entornos.
Redes
Te recomendamos que uses el modo de conexión de acceso privado a servicios . Memorystore para Redis usa dos modos de conexión: acceso a servicios privados e intercambio de tráfico directo. El modo de conexión de acceso privado a servicios hace que la administración del rango de IP sea más simple y te permite usar la VPC compartida si lo deseas.
Una vez que creas una instancia, no se puede cambiar el modo de conexión.
Para obtener más detalles, consulta Herramientas de redes.
Supervisión y alertas
Te recomendamos usar la supervisión y las alertas porque te ofrecen indicadores clave del uso de memoria de tu instancia de Redis. También te brindan estadísticas sobre la eficiencia con la que tu instancia de Redis responde a las solicitudes entrantes de caché.
Debes configurar las siguientes alertas predeterminadas:
- Configura una alerta de Cloud Monitoring para el uso de memoria
- Configura una alerta de Cloud Monitoring para la proporción de uso de memoria del sistema
Prácticas recomendadas para el uso de CPU
El uso inadecuado de comandos costosos de Redis genera problemas de latencia alta, falta de respuesta o conectividad. Las instancias de nivel Estándar proporcionan alta disponibilidad durante la recuperación ante desastres y se basan en la replicación asíncrona entre los nodos principal y de réplica. Si uno de los nodos tiene un procesamiento de comandos costoso que bloquea el subproceso principal de Redis, la replicación podría verse afectada. Si el problema persiste y se produce una interrupción de la ubicación, es posible que los datos más recientes escritos en la ubicación de la interrupción no estén disponibles en la otra ubicación.
Te recomendamos que uses Cloud Monitoring
para establecer alertas para la métrica de segundos de CPU del subproceso principal
(redis.googleapis.com/stats/cpu_utilization_main_thread) para asegurarte de que el uso de CPU no supere los 0.8 segundos para el nodo principal o los 0.5 segundos
para cada nodo de réplica, cuando la réplica se designa como una réplica de lectura.
Si tu instancia de Redis supera los valores recomendados, te recomendamos que la escales a un nivel de capacidad más alto o sigas las instrucciones de solución de problemas para evitar operaciones con uso intensivo de CPU.
Comandos con uso intensivo de recursos
Te recomendamos que evites usar comandos de Redis que consuman muchos recursos. El uso de estos comandos puede generar los siguientes problemas de rendimiento:
- Latencia alta y tiempos de espera del cliente
- Presión de memoria causada por comandos que aumentan el uso de memoria
- Pérdida de datos durante la replicación y la sincronización de nodos porque el subproceso principal de Redis está bloqueado
- Verificaciones de estado, observabilidad y replicación insuficientes
En la siguiente tabla, se enumeran ejemplos de comandos de Redis que consumen muchos recursos y se proporcionan alternativas que son eficientes en cuanto a los recursos.
| Categoría | Comando con uso intensivo de recursos | Alternativa eficiente en cuanto a los recursos |
|---|---|---|
| Ejecutar para todo el espacio de claves | KEYS |
SCAN |
| Ejecutar para un conjunto de claves de longitud variable | LRANGE |
Limita el tamaño del rango que usas para una consulta. |
ZRANGE |
Limita el tamaño del rango que usas para una consulta. | |
HGETALL |
HSCAN |
|
SMEMBERS |
SSCAN |
|
| Bloquear la ejecución de una secuencia de comandos | EVAL |
Asegúrate de que la secuencia de comandos no se ejecute de forma indefinida. |
EVALSHA |
Asegúrate de que la secuencia de comandos no se ejecute de forma indefinida. | |
| Quitar archivos y vínculos | DEL |
UNLINK |
| Publicar y suscribirse | PUBLISH |
SPUBLISH |
SUBSCRIBE |
SSUBSCRIBE |