Pub/Sub broadcasts only live events to active subscriptions. Independent XREAD readers each replay retained history; one group shares new deliveries. Exact MAXLEN 2 removes the oldest entry. Historical source illustration, not a new service run.

Redis pub/sub and streams are different tools

Redis Pub/Sub and Streams answer different delivery questions. Pub/Sub broadcasts to currently active subscriptions without retaining messages for later replay. A stream stores entries that readers can revisit while they remain retained. Choosing between them starts with who must receive an event and what should happen during a consumer’s absence. ...

February 6, 2028 · 6 min · XB Field Notes
The retained stream, group position and PEL change separately. Delivery advances the position before ACK; ACK removes pending references. XAUTOCLAIM moves ownership, can repeat modeled effects, and cannot recover a deleted payload. Historical source illustration.

Redis Streams let a group share the work

A Redis Streams consumer group distributes new entries among named consumers and records deliveries awaiting acknowledgement. It does not guarantee exactly-once effects, prevent retention loss, or recover abandoned work by itself. Understanding the group position, pending entries, and retained stream data separately is essential before treating it as a work queue. ...

February 5, 2028 · 7 min · XB Field Notes
For >log 2>&1, the first snapshot sends descriptor 1 to log and leaves 2 at its old destination; the second sends both to log. For 2>&1 >log, both first refer to the old stdout destination, then only 1 moves to log. Copying does not create a live alias.

Redirection reorders the streams

Redirection changes a command’s file descriptors before the command executes. The shell processes redirections from left to right, opening or duplicating a descriptor as it reaches each operation. Descriptors 0, 1, and 2 conventionally represent standard input, standard output, and standard error. Reading this sequence as concrete changes to those handles explains both misplaced diagnostics and files that become empty before their contents can be read. ...

September 29, 2027 · 4 min · XB Field Notes
Billing and analytics point to different positions in one stream, while pending entries remain a separate state from either cursor.

Delivery is not completion: schematic.

Redis stream groups track delivery positions

A Redis stream does not automatically track a separate cursor for every connection. Ordinary XREAD uses a position supplied by the application. A consumer group instead owns a server-side last-delivered position plus pending delivery records. Confusing those two forms of progress can make a restart skip unfinished work or replay effects already completed. ...

July 13, 2027 · 7 min · XB Field Notes