0Pricing
Redis Caching & Messaging (Pub/Sub, Streams) · درس

ما هي Redis Streams؟

افهموا بنية Redis Streams وفوائدها باعتبارها قائمة انتظار رسائل قوية ودائمة.

ما هي Redis Streams؟ درس مجاني في Redis Caching & Messaging (Pub/Sub, Streams) على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Redis Caching & Messaging (Pub/Sub, Streams)، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Redis Caching & Messaging (Pub/Sub, Streams) 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

What are Redis Streams?

Welcome! In this lesson, we'll dive into Redis Streams, a powerful data structure for managing real-time event data.

Think of a stream as an append-only log of messages, similar to a traditional message queue or a Kafka topic, but built right into Redis.

Streams are ideal for building event-driven architectures, processing sensor data, or tracking user activity.

Streams vs. Pub/Sub

Redis already has Pub/Sub, so why Streams?

  • Persistence: Stream messages are stored and not lost if consumers are offline. Pub/Sub messages are fire-and-forget.
  • Consumer Groups: Streams support consumer groups for cooperative message processing, allowing multiple applications to read the same stream without duplicating work.
  • Message History: You can read messages from any point in the stream's history.

Streams offer durability and advanced consumption patterns that Pub/Sub doesn't.

Stream Architecture: Entries & IDs

A Redis Stream is an ordered sequence of entries. Each entry is composed of:

  • A unique Stream ID: This is a timestamp-based ID (e.g., 1678886400000-0) that ensures messages are strictly ordered.
  • One or more field-value pairs: These are the actual data for the message, similar to a small Redis Hash.

Think of it as a log where each line has a unique timestamp and some key-value data.

Adding Entries with XADD

Producers add new entries to a stream using the XADD command. Redis automatically generates a unique ID for each new entry, or you can provide one.

The * wildcard tells Redis to generate a new, unique ID for the entry.

Try running this example:

public class Main {
  public static void main(String[] args) {
    System.out.println("Simulating Redis XADD command:");
    String streamName = "sensor_data";
    
    // XADD sensor_data * temp 25 hum 60
    System.out.println("redisClient.xadd(");
    System.out.println("  \"" + streamName + "\", \"*\",");
    System.out.println("  \"temp\", \"25\", \"hum\", \"60\"");
    System.out.println(");");
    System.out.println("\nOutput (example ID): 1678886400000-0");
  }
}

Understanding Stream IDs

Stream IDs have two parts: <milliseconds-timestamp>-<sequence-number>.

  • The timestamp is the time the entry was added (in Unix milliseconds).
  • The sequence number is incremented if multiple entries are added within the same millisecond.

This structure guarantees that IDs are always increasing, providing a natural order for messages. You can use 0-0 to refer to the very beginning of a stream.

Reading from a Stream with XREAD

Consumers use the XREAD command to retrieve entries from one or more streams. You specify the stream name and the ID from which to start reading.

XREAD allows you to fetch a batch of messages, making it efficient for consumers.

Try running this example:

public class Main {
  public static void main(String[] args) {
    System.out.println("Simulating Redis XREAD command:");
    String streamName = "sensor_data";
    String startId = "0-0"; // Read from the beginning
    
    // XREAD STREAMS sensor_data 0-0
    System.out.println("List<Map<String, String>> entries =");
    System.out.println("  redisClient.xread("STREAMS",");
    System.out.println("  \"" + streamName + "\", \"" + startId + "\"");
    System.out.println(");");
    
    System.out.println("\nExample Output:");
    System.out.println("ID: 1678886400000-0, {temp=25, hum=60}");
    System.out.println("ID: 1678886400001-0, {temp=26, hum=61}");
  }
}

Blocking Reads for Real-time

To read new messages as they arrive, you can use the BLOCK option with XREAD. This makes the command wait for new data if no new entries are available.

You can also specify a timeout for the blocking operation. This is crucial for building real-time applications that react instantly to events.

Example: XREAD BLOCK 0 STREAMS mystream $ ($ means 'last ID in stream').

Stream Persistence & History

Unlike Pub/Sub, Redis Streams are persistent. Messages added to a stream remain there until explicitly removed or trimmed.

This allows new consumers to read the entire history of events from the beginning, or catch up from a specific point if they were temporarily offline.

This persistence is a key feature for reliable event logging and replay capabilities.

Ordered & Immutable Entries

Redis Streams guarantee that entries are always added in the order they are received and assigned strictly incrementing IDs.

Once an entry is added to a stream, it cannot be modified. This immutability is fundamental for maintaining an accurate, auditable log of events.

These properties make Streams excellent for event sourcing and ensuring data consistency.

Check Your Understanding

Which of the following are key benefits or characteristics of Redis Streams?

Recap: What are Redis Streams?

In this lesson, we learned that Redis Streams are a powerful, persistent, append-only log data structure.

  • They offer persistence, ordered delivery, and support for consumer groups, differentiating them from Pub/Sub.
  • We explored how to add entries with XADD and read them with XREAD.
  • Streams are ideal for event sourcing, real-time data processing, and building reliable message queues.

Next, we'll dive deeper into Stream commands and features!

الأسئلة الشائعة

هل درس «ما هي Redis Streams؟» مجاني؟

نعم — نص درس «ما هي Redis Streams؟» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Redis Caching & Messaging (Pub/Sub, Streams)، انتقل إلى CoddyKit PRO. تتضمن دورة Redis Caching & Messaging (Pub/Sub, Streams) 4 دروس في المجموع.

ماذا ستتعلم في «ما هي Redis Streams؟»؟

افهموا بنية Redis Streams وفوائدها باعتبارها قائمة انتظار رسائل قوية ودائمة. تتمرن على Redis Caching & Messaging (Pub/Sub, Streams) مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Redis Caching & Messaging (Pub/Sub, Streams)؟

لا تُشترط خبرة سابقة. Redis Caching & Messaging (Pub/Sub, Streams) على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «ما هي Redis Streams؟»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Redis Caching & Messaging (Pub/Sub, Streams) هذا؟

نعم. كل درس في Redis Caching & Messaging (Pub/Sub, Streams) يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما هي Redis Streams؟
  2. هياكل بيانات التدفقات وأوامرها
  3. استمرارية رسائل التدفقات
  4. تحديد طول التدفقات وتقليصها
← العودة إلى Redis Caching & Messaging (Pub/Sub, Streams)