0Pricing
Redis Caching & Messaging (Pub/Sub, Streams) · Lesson

Stream Data Structures & Commands

Learn to add entries (`XADD`), read from streams (`XREAD`), and manage stream length.

Stream Data Structures & Commands is a free Redis Caching & Messaging (Pub/Sub, Streams) lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Redis Caching & Messaging (Pub/Sub, Streams) learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Welcome to Stream Data

In the previous lesson, we learned what Redis Streams are. Now, let's dive into their core structure and how we interact with them.

Redis Streams are powerful, append-only data structures that act like a log, storing a sequence of entries. Each entry has a unique ID and a set of field-value pairs.

Stream Entry Anatomy

Each entry in a Redis Stream is like a small record. It consists of:

  • Entry ID: A unique identifier, typically a timestamp and a sequence number (e.g., 1678886400000-0).
  • Field-Value Pairs: One or more key-value pairs representing the actual data of the entry (e.g., sensor-id: 123, temperature: 25.5).

Think of it like a mini-hash map stored chronologically within the stream.

Adding Entries with XADD

To add a new entry to a Redis Stream, we use the XADD command. This command appends a new entry to the end of the stream, generating a unique ID.

The basic syntax is:

XADD key ID field value [field value ...]

For the ID argument, you'll typically use * to let Redis automatically assign a unique ID based on the current time.

XADD Command Example

Let's add some sensor data to a stream named sensor_readings. We'll use * to let Redis automatically assign a unique ID.

XADD sensor_readings * sensor-id 101 temperature 23.5 humidity 60
XADD sensor_readings * sensor-id 102 temperature 24.1 humidity 62

Reading from Streams: XREAD

Once data is in a stream, you'll want to read it. The XREAD command is used for this purpose. It allows you to read entries from one or more streams, starting from a specific ID.

A common way to read from the very beginning of a stream is to use 0-0 as the starting ID for that stream.

Basic XREAD Operations

Let's read the entries we just added. We can specify COUNT to limit the number of entries returned. The $ ID means 'read only new entries added since the last time I read' or 'from now' if it's the first read. It's great for tailing a stream!

XREAD COUNT 2 STREAMS sensor_readings 0-0
XREAD STREAMS sensor_readings $

Managing Stream Length: MAXLEN

Streams can grow infinitely, consuming a lot of memory. To prevent this, Redis allows you to limit the maximum length of a stream using the MAXLEN option with XADD.

When the stream exceeds the specified length, older entries are automatically evicted from the head of the stream.

XADD with MAXLEN Example

We can add entries and ensure our sensor_readings stream never exceeds a certain number of entries. Using ~ before the count makes the trimming approximate, which is faster and often sufficient.

XADD sensor_readings MAXLEN ~ 3 * sensor-id 103 temperature 24.8 humidity 61
XADD sensor_readings MAXLEN ~ 3 * sensor-id 104 temperature 25.2 humidity 63
XADD sensor_readings MAXLEN ~ 3 * sensor-id 105 temperature 25.0 humidity 60
XLEN sensor_readings

Quick Check: Stream Commands

You've learned about adding and reading stream entries, as well as managing stream length. Let's test your understanding.

Recap: Stream Basics

Great job! In this lesson, you mastered the fundamental commands for interacting with Redis Streams:

  • XADD: To append new entries with unique IDs and field-value pairs.
  • XREAD: To retrieve entries from streams, starting from a specific ID or reading new entries with $.
  • MAXLEN: To control stream size during XADD operations, preventing unbounded memory growth.

Next, we'll explore how Streams provide message persistence and ordered delivery, differentiating them from Pub/Sub.

Frequently asked questions

Is the “Stream Data Structures & Commands” lesson free?

Yes — the full text of “Stream Data Structures & Commands” is free to read here on the web, and the Redis Caching & Messaging (Pub/Sub, Streams) course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Redis Caching & Messaging (Pub/Sub, Streams) course, upgrade to CoddyKit PRO.

What will I learn in “Stream Data Structures & Commands”?

Learn to add entries (`XADD`), read from streams (`XREAD`), and manage stream length. You practise Redis Caching & Messaging (Pub/Sub, Streams) with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Redis Caching & Messaging (Pub/Sub, Streams)?

No prior experience is required. Redis Caching & Messaging (Pub/Sub, Streams) on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “Stream Data Structures & Commands” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Redis Caching & Messaging (Pub/Sub, Streams) lesson?

Yes. Every Redis Caching & Messaging (Pub/Sub, Streams) lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. What are Redis Streams?
  2. Stream Data Structures & Commands
  3. Stream Message Persistence
  4. Capping and Trimming Streams
← Back to Redis Caching & Messaging (Pub/Sub, Streams)