Pub/Sub viewer
functionalSubscribe to channels or patterns and watch messages arrive live.
The Pub/Sub viewer subscribes to channels and patterns and shows every message as it arrives: one row per message with the time SQLly received it, the channel, the pattern it matched (for pattern subscriptions), and the payload. It lives in the Activity Monitor as the Pub/Sub tab on Redis and Redis-compatible connections (Valkey, KeyDB, Dragonfly, Amazon ElastiCache, Amazon MemoryDB). The command palette's Redis Pub/Sub Viewer… and Pub/Sub… on a Redis database's right-click menu open the monitor straight onto it.
Subscribing
Type one or more names, comma-separated, and press Subscribe. A plain
name (orders) subscribes with SUBSCRIBE; a name with glob
characters (alerts.*, metrics.[ab], job?)
subscribes with PSUBSCRIBE. To subscribe to a channel whose name itself
contains glob characters, start it with =: =orders[eu]
subscribes to the channel literally named orders[eu] (write
==x for a channel named =x). Names cannot contain commas,
since the comma separates them. Like the Profiler, the viewer opens a
dedicated connection for this - the editor still refuses
SUBSCRIBE, because a subscribed connection can no longer run ordinary
commands. A subscription has no time box: Stop, switching tabs,
closing the monitor (docked or popped out), disconnecting the connection, or deleting
it closes that connection at once. Sharded pub/sub (SSUBSCRIBE) is not
supported.
Because the viewer dials the server itself, it needs a direct connection. On a connection routed through a relay bridge the tab explains that and Subscribe stays disabled.
Reading messages
Messages list newest first. Pause stops recording without dropping
the subscription (messages keep arriving and are counted), and Clear
empties the list. The list is capped - 1,000 messages by default, adjustable up to
100,000 - and when it is full the oldest messages are dropped; the status line counts
how many. The table shows at most the newest 2,000 of them, and the status line says
so when the list holds more. The table keeps your place while messages arrive: the
selected message stays selected (until it is dropped from the list), and if you
scroll down the rows you are reading stay put, so you can select a row on a busy
channel and Preview Payload opens that message in the value viewer,
where the format picker can show it as text, pretty JSON, hex, or decoded MessagePack.
Binary payloads are kept byte-exact and shown as hex rather than mangled into text,
and a channel or pattern name that is not valid UTF-8 shows its bytes as
\xHH escapes.
A message can be up to 512 MB, so the viewer keeps at most the first 64 KiB of each payload (and the first 1 KiB of a channel or pattern name). A cut payload says so in the table, as … (truncated, N bytes) with its full size, and Preview Payload opens the part that was kept with a notice giving both sizes. The whole list is also held to 64 MB: past that the oldest messages are dropped, and counted, the same way as when the message cap is reached.

Pub/Sub messages are fire-and-forget: the viewer only sees what is published while it is subscribed, and nothing is replayed. An ACL user needs the +subscribe / +psubscribe permissions and access to the channels (&pattern).