Otras restricciones del uso de comandos
En esta sección se describen las restricciones de algunos comandos de Redis.
Comando de KEYS
En el caso de una gran cantidad de datos almacenados en caché, la ejecución del comando KEYS puede bloquear la ejecución de otros comandos durante mucho tiempo u ocupar una memoria excepcionalmente grande. Por lo tanto, al ejecutar el comando KEYS, describa el patrón exacto y no utilice keys * difusos. No utilice el comando KEYS en el entorno de producción. De lo contrario, el servicio que se ejecuta se verá afectado.
Comandos en el grupo de Server
- Mientras se ejecutan comandos que tardan mucho en ejecutarse, como FLUSHALL, las instancias DCS pueden no responder a otros comandos y pueden cambiar al estado defectuoso. Después de que el comando termine de ejecutarse, la instancia volverá a la normalidad.
- Cuando se ejecuta el comando FLUSHDB o FLUSHALL, la ejecución de otros comandos de servicio puede bloquearse durante mucho tiempo en el caso de una gran cantidad de datos almacenados en caché.
Comandos EVAL y EVALSHA
- Cuando se ejecutan los comandos EVAL o EVALSHA, el parámetro del comando debe contener al menos una clave. De lo contrario, el mensaje de error, se muestra "ERR eval/evalsha numkeys must be bigger than zero in redis cluster mode" ("ERR eval/evalsha numkeys debe ser mayor que cero en el modo redis cluster").
- Cuando se ejecuta el comando EVAL o EVALSHA, una instancia de clúster de DCS para Redis utiliza la primera clave para calcular las ranuras. Asegúrese de que las claves que se van a utilizar en su código estén en la misma ranura. Para obtener más información, visite el sitio web oficial de Redis.
- Para el comando EVAL:
- Aprenda las funciones de script de Lua de Redis antes de ejecutar el comando EVAL. Para obtener más información, visite el sitio web oficial de Redis.
- El tiempo de ejecución de un script de Lua es de 5 segundos. Deben evitarse las declaraciones que consumen mucho tiempo, como las declaraciones de sueño durante mucho tiempo y las declaraciones de bucle grande.
- Al invocar a un script Lua, no utilice funciones aleatorias para especificar claves. De lo contrario, los resultados de la ejecución son inconsistentes en los nodos principal y en espera.
Depuración de scripts de Lua
Cuando se depuran scripts Lua para las instancias de Clúster Proxy y de separación de lectura/escritura, solo se admite el modo de no bloqueo asíncrono --ldb. No se soporta el modo de bloqueo sincrónico --ldb-sync-mode. Por defecto, la simultaneidad máxima en cada proxy es de 2. Esta restricción no se aplica a otros tipos de instancias.
Otras restricciones
- El límite de tiempo para ejecutar un comando Redis es de 15 segundos. Para evitar que otros servicios fallen, se activará un switchover principal/replicado una vez que se agote el tiempo de ejecución del comando.
- Las instancias de clúster de DCS para Redis creadas antes del 10 de julio de 2018 deben actualizarse para que admitan los siguientes comandos:
SINTER, SDIFF, SUNION, PFCOUNT, PFMERGE, SINTERSTORE, SUNIONSTORE, SDIFFSTORE, SMOVE, ZUNIONSTORE, ZINTERSTORE, EVAL, EVALSHA, BITOP, RENAME, RENAMENX, RPOPLPUSH, MSETNX, SCRIPT LOAD, SCRIPT KILL, SCRIPT EXISTS y SCRIPT FLUSH