BROKABROKA
Sign inDownload CommunityRequest a demo
Documentation112 pages
Guides

Pub/Sub

Updated 3 October 2026 · applies to 1.0.0 · Commercial

Redis Pub/Sub keeps nothing. A message goes to whoever is connected at that instant and then it is gone — there is no queue it could have landed in instead. That single fact shapes everything on this screen.

Who is listening right now

The channel list shows the channels that currently have at least one listener, with a count beside each. It is read a page at a time, in order of name: the server counts listeners only for the channels on the page, so the list cannot be sorted by that count, and the number of active channels above it is the whole server's.

The Pub/Sub screen: 3 active channels, 4 direct subscribers and 2 pattern subscriptions counted separately; Channels with a listener lists broka:audit:events and broka:cache:invalidate with one subscriber each and broka:orders:events with two; beside it the Publish card with Publish and Publish to shard, and Keyspace notifications with the flags AKE set.
Pattern subscriptions are counted apart from direct ones because Redis only ever reports them server-wide - it cannot say which channel a pattern subscriber is interested in.

These are direct subscribers only. A listener that subscribed to a pattern is not counted against any individual channel, because Redis does not attribute pattern subscriptions to channels — it only reports how many exist server-wide. So that figure is shown separately, as its own number.

The consequence is worth stating: a channel showing no direct subscribers may still be reaching someone. BROKA keeps the two numbers apart rather than adding them into one figure that would be wrong in both directions.

Publishing

A publish reports how many subscribers received it at that instant. A count of zero is reported as what it is — nobody was listening, so the message is gone — rather than as a failure, because Redis did exactly what it was asked.

Do not read that number as a delivery confirmation. It counts connections reached, not work done.

There are two publish actions, and they are separate namespaces: the ordinary one and the sharded one. A listener subscribed the ordinary way never receives a sharded publish, and the console says so on the result rather than leaving a silent zero to be interpreted as "nobody is listening".

Shard channels

Sharded Pub/Sub has listeners of its own, and the Shard channels with a listener card lists them: every shard channel that has at least one subscriber, with how many. It is a separate list because it is a separate namespace — a listener subscribed with SSUBSCRIBE is not counted among the channels above, and one subscribed the ordinary way is not counted here. A shard channel exists only while something is listening to it, so an empty list means nobody is.

The Shard channels with a listener card: a Pattern box with Filter and the hint that the server applies the glob to the shard channel names it knows, then four shard channels sorted by name — cache:{catalog}:invalidate with 1 subscriber, inventory:{sku-10007}:updates with 2, orders:{eu-west-1}:events with 3 and presence:{room-42} with 2.
These listeners subscribed with SSUBSCRIBE, so none of them is counted among the ordinary channels; on a cluster each node's count is summed.

Pattern, a glob the server applies to the shard channel names it knows, narrows the list. On a cluster every node is asked, because each answers only for its own subscribers, and the counts are summed; a node that could not be asked is named above the list, so its channels are known to be missing rather than silently left out. The card is read-only.

Sharded Pub/Sub arrived with Redis 7.0. On an older server the card stays and says so, with the reason.

Watching a channel

The Watch card subscribes for you and shows what arrives, live. Name one exact Channel, or tick Subscribe by pattern and give a glob as Redis reads it — events:*, or __keyevent@0__:* for the keyspace notifications described below — and press Watch. A live badge shows once the server has confirmed the subscription, and nothing arriving when the channel is quiet; the newest 200 messages stay on screen, newest first, each with its channel and, for a pattern, the pattern that matched.

Redis Pub/Sub retains nothing, so this shows what arrives from now on, never what was published before, and the time on each row is when BROKA received it — the protocol carries no publish time. Stop ends the subscription, and so does leaving the page; when the server or the connection ends it instead, the card says why. A connection to Redis that drops ends the watch with that said — anything published while it was down never arrives, so watch again to go on listening — rather than leaving it to read as a quiet channel.

The Watch card after it was stopped: the pattern __keyevent@0__:* with Subscribe by pattern ticked, the note that Redis Pub/Sub retains nothing and that each row's time is when BROKA received it, a banner reading 'Stopped — You stopped it.', and the keyspace events received at 17:55:45 — zincr on leaderboard:eu-west-1:live, incrby on rate:api:checkout, hincrby on stats:cart:today — each beside the pattern that matched.
Keyspace notifications are ordinary Pub/Sub messages, so watching keyevent@0:* shows each write as it happens — from the moment the subscription opened, never before.

Watching writes nothing to Redis, so it needs no write access, but what arrives is the messages themselves: it takes Read message contents (messages.read) as well as viewing the connection, and without it the Watch card says you are not permitted. It is recorded as a read before the subscription opens, because it is an open-ended look at live traffic.

Keyspace notifications

Redis can publish an event whenever a key is written, expired or evicted. It is off by default, and BROKA can turn it on.

Two things the screen says before you do:

It is a server-wide change. It affects every client of that Redis, not your session, and it costs the server work on every command that matches the flags you enable.

On a cluster it is written to every node. A single configuration write lands on whichever node the client happened to be routed to — which, measured against a real cluster, meant one replica was configured while three primaries were not. So BROKA fans the write out and reports how many nodes took it and which refused.

The flags are edited as the notify-keyspace-events string, exactly as Redis stores it, with a chip for each flag; Apply writes it, and an empty string switches notifications off.

Who may publish or change the flags

Publishing and changing keyspace notifications need write permission on the connection. Where you may not write — a read-only environment, a connection frozen with its own read-only switch, or a role without the permission — their buttons are disabled and the Publish card says why. Neither asks for a reason, except in a guarded environment, where every write does.

← PreviousMemoryNext →ACL users and the security log