Streams and consumer groups

functional

Page through a stream, see groups, consumers, pending entries and lag, and run reviewed stream commands from the key view.

A stream key opens in the key view like any other key, with four tabs above the grid instead of one value: Entries, Groups, Consumers and Pending. Together they answer the questions you otherwise piece together from XRANGE, XINFO and XPENDING by hand: what is in the stream, which consumer groups read it, how far behind each group is, and which entries were delivered to a consumer that never acknowledged them. Double-click a stream key in the explorer, or right-click it and choose Open Value.

The tabs

TabWhat it shows
EntriesThe stream's entries, oldest first, 1,000 at a time with showing N of M entries and Load more. Each row is the entry id and its fields; click a row to see the fields under the grid with the value-format picker.
GroupsOne row per consumer group: its consumer count, pending count, the last entry delivered to it, how many entries it has read, its lag (entries added after the last one it read) and the stream's length. Lag and entries read need Redis 7 or later and are blank before it, or when the server cannot tell. Click a group to make it the group the next two tabs show.
ConsumersThe chosen group's consumers, each with how many entries it holds pending, how long it has been idle (milliseconds since it last read) and, on Redis 7.2 and later, how long it has been inactive (since it last made progress).
PendingEvery entry the chosen group delivered and nobody acknowledged: the entry id, the consumer holding it, its idle time in milliseconds and how many times it was delivered, 1,000 at a time with showing N of M pending and Load more. A consumer that died mid-batch shows up here as entries whose idle time keeps growing.

The group chips beside the tabs switch the Consumers and Pending tabs to another group without going back to Groups.

SQLly
Redis stream in the key view: the Pending tab for a group, listing a dead consumer's entries with their idle milliseconds, and the Auto-claim form showing the exact XAUTOCLAIM before Run.
Redis stream in the key view: the Pending tab for a group, listing a dead consumer's entries with their idle milliseconds, and the Auto-claim form showing the exact XAUTOCLAIM before Run.

Actions

TabButtonCommand that runs
EntriesAppend entry…XADD key * field value … - type a field and value, press Add pair for each extra pair; * lets the server pick the id, or type one
EntriesDelete selected…XDEL key id
EntriesTrim…XTRIM key MAXLEN n (keep the newest n) or XTRIM key MINID id (drop lower ids), optionally approximate (~); asks you to type the count or id first
GroupsCreate group…XGROUP CREATE key group $ - start at $ to deliver only new entries, or 0 for the whole stream
GroupsDestroy selected group…XGROUP DESTROY key group; asks you to type the group's name first
PendingAcknowledge selected…XACK key group id
PendingClaim selected…XCLAIM key group consumer min-idle id - the idle threshold starts at the entry's current idle time, so a consumer that picked it up meanwhile keeps it
PendingAuto-claim…XAUTOCLAIM key group consumer 60000 0-0 COUNT 100 - moves every entry idle at least that long (a minute unless you change it) to the consumer you name

Each form shows the exact command it will run, updated as you type, and nothing runs until you press Run. The stream actions go through the same guards as every key view edit: a read-only connection or a production connection whose writes are locked refuses them, and a connection that confirms data changes turns the button into Confirm Run. After a successful action the key reloads, keeping the tab and group you were on.

Trimming and destroying a group cannot be undone. XTRIM deletes entries and XGROUP DESTROY deletes the group with all its consumers and pending entries, so on top of the usual review the form asks you to type the trim count (or id) or the group's name, and Run stays disabled until what you typed matches exactly. The trim form also says roughly how many entries the count would remove.

Field names, values, group and consumer names are passed to the server as their exact bytes: 00014 stays 00014, and a binary group or consumer name picked from the grid is used as is (a binary group's name is confirmed by typing its hex). Tick Value is hex in Append entry to write binary values.