ERR Can't execute '<cmd>': only (P|S)SUBSCRIBE / (P|S)UNSUBSCRIBE / PING / QUIT / RESET are allowed in this context: Command not allowed in subscribe context (comando no permitido en el contexto de suscripción)
Redis¿Qué significa?
Después de que la conexión entrara en el modo de suscripción Pub/Sub, intentó ejecutar un comando normal (p. ej., GET/SET) que no está permitido en este modo. Una conexión en modo de suscripción solo acepta un conjunto limitado de comandos. En versiones antiguas el mensaje era "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context".
¿Por qué ocurre?
Enviar comandos de datos por una conexión que ha pasado al modo de suscripción con SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE. En el protocolo RESP2, una conexión suscrita solo permite (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT y RESET. El error típico es compartir una sola conexión para pub/sub y para el trabajo normal.
Cómo solucionarlo
Use una conexión dedicada para Pub/Sub y abra otra para los comandos normales (la mayoría de las bibliotecas cliente lo hacen automáticamente). Envíe UNSUBSCRIBE/PUNSUBSCRIBE para salir del modo de suscripción; después, los comandos normales funcionan. En el protocolo RESP3 (HELLO 3) también se permiten otros comandos en una conexión suscrita; cambie a RESP3 si su driver lo admite.
Más entradas de este motor
- NOGROUP No such key or consumer groupNo such key or consumer group in stream
- NOTBUSY No scripts in execution right nowNo scripts in execution right now
- DENIED Redis is running in protected modeRedis is running in protected mode
- ERR SELECT is not allowed in cluster modeSELECT is not allowed in cluster mode
- ERR wrong number of arguments for commandWrong number of arguments for command
- ERR Background save already in progressBackground save already in progress
- ERR bit offset is not an integer or out of rangeBit offset is not an integer or out of range (el offset de bit no es un entero o está fuera de rango)