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 não permitido no contexto de assinatura)
RedisO que significa?
Depois que a conexão entrou no modo de assinatura do Pub/Sub, você tentou executar um comando comum (por exemplo, GET/SET) que não é permitido nesse modo. Uma conexão em modo de assinatura aceita apenas um conjunto limitado de comandos. Em versões antigas, a mensagem era "ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context".
Por que acontece?
Enviar comandos de dados por uma conexão que passou para o modo de assinatura com SUBSCRIBE/PSUBSCRIBE/SSUBSCRIBE. No protocolo RESP2, uma conexão com assinatura permite apenas (P|S)SUBSCRIBE, (P|S)UNSUBSCRIBE, PING, QUIT e RESET. Compartilhar uma única conexão para pub/sub e trabalho comum é o erro típico.
Como resolver
Use uma conexão dedicada para Pub/Sub e abra outra para comandos comuns (a maioria das bibliotecas cliente faz isso automaticamente). Envie UNSUBSCRIBE/PUNSUBSCRIBE para sair do modo de assinatura; os comandos comuns voltam a funcionar. No protocolo RESP3 (HELLO 3), outros comandos também são permitidos em uma conexão com assinatura; mude para RESP3 se o seu driver suportar.
Mais entradas deste banco
- 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 (o offset de bit não é um inteiro ou está fora do intervalo)