O Redis não mantém as mensagens na memória no contexto do Pub/Sub como você pode ver na implementação (x):
- a mensagem é enviada aos clientes que estão ouvindo esse canal (se houver),
- a mensagem é enviada aos clientes que ouvem os canais correspondentes (se houver).
Em seguida, o Redis simplesmente retorna quantos clientes receberam a mensagem (tendo em mente que um cliente pode receber uma única mensagem várias vezes, por exemplo, se vários padrões corresponderem).
Se não houver cliente inscrito, o Redis simplesmente retorna 0 e a mensagem não é gravada/bufferizada:
> publish foo test
(integer) 0
(x) basicamente o Redis faz um loop sobre a lista de clientes inscritos e envia uma resposta com a mensagem.