The profile hash contains name Ada L, visits 0, and empty bytes. An arrow selects visits with HGET, leaving the other fields in the record.

A Redis hash stores many fields in one key

A Redis hash is a field-addressable record under one key, not a schema-checked object or an automatically nested document. It is useful when callers need a few attributes without replacing the whole record. That advantage depends on access patterns, field sizes, and the meaning of replies, not merely on choosing the hash type. ...

February 24, 2028 · 7 min · XB Field Notes
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
A schematic 200 km search circle around longitude 15, latitude 37 contains Catania and Palermo. ASC COUNT 1 selects Catania. This is not a scaled road map.

Redis geo handles locations by distance

Redis geospatial commands index named locations and answer nearby-point queries without returning every coordinate to the application. They are useful when spherical distance is an acceptable model. They do not provide road routes, altitude-aware separation, arbitrary polygon analysis, or a guarantee that every returned location is still current. ...

January 25, 2028 · 6 min · XB Field Notes
Two schematic request-reply ladders compare waiting after each command with sending a batch before collecting replies.

Pipeline the waits: schematic.

Measure the benefit of Redis pipelining

Pipelining reduces the waits between sending Redis commands, but its benefit must be measured for a particular workload. A remote synchronous loop may mostly wait for network latency; a local loop may spend more time in the client, scheduling, and socket I/O. Neither case justifies a universal promise of several-fold improvement. ...

January 20, 2028 · 6 min · XB Field Notes
The source Lua example preserves owner-b when a stale owner-a requests deletion, deletes on an owner-b match, and returns zero for an absent key. An unhandled redis.call error preserves earlier writes but stops later statements; confirmed NOSCRIPT concerns missing code.

Redis Lua scripts run without interleaving

A Redis Lua script can read data, make a decision, and update it without another client’s command interleaving between those steps. It does not mean every statement succeeds, that earlier writes are undone after an error, or that the result is automatically durable. ...

January 11, 2028 · 7 min · XB Field Notes
A list preserves b, a, b as three positions; a sorted set orders unique a and b by scores 10 and 20.

Positions versus scores: schematic.

A Redis list and a sorted set solve different problems

A Redis list stores an ordered sequence that permits repeated values. A sorted set stores unique members ordered by numeric scores. The useful distinction is not that one is universally faster or cheaper: it is whether the application needs positional sequence operations, unique membership, score ranges, or a combination requiring a different data model. ...

January 4, 2028 · 7 min · XB Field Notes
A clock and a full capacity bin illustrate different causes of a miss. A positive TTL cannot protect an eligible key from capacity eviction.

Redis expiry is a deadline, eviction is a capacity policy

Expiration and eviction can both turn a successful lookup into a miss, but they answer different questions. Expiration follows a key’s deadline. Eviction removes eligible keys to respond to memory pressure. Extending a TTL cannot prevent capacity-driven eviction, and increasing memory cannot correct a deadline that the application set incorrectly. ...

December 26, 2027 · 6 min · XB Field Notes