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

Langganan Pencocokan Pola

Manfaatkan `PSUBSCRIBE` untuk berlangganan ke beberapa kanal berdasarkan pola sehingga fleksibilitas meningkat.

Langganan Pencocokan Pola adalah pelajaran Redis Caching & Messaging (Pub/Sub, Streams) gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Redis Caching & Messaging (Pub/Sub, Streams), dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Redis Caching & Messaging (Pub/Sub, Streams) mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Flexible Subscriptions with Patterns

Welcome to a powerful feature of Redis Pub/Sub: Pattern Matching Subscriptions. Instead of subscribing to a single, exact channel name, you can subscribe to multiple channels using flexible patterns.

This allows your application to listen for a wider range of related messages with a single subscription, making your message handling more dynamic.

Why Use Pattern Matching?

Imagine you have many services, each publishing events to channels like service.auth.login, service.orders.created, or service.inventory.updated.

  • Centralized Logging: A single logger service can subscribe to service.* to catch all events.
  • Dynamic Event Handling: Easily react to new event types without changing subscription code.
  • Microservices: Decouple services further by allowing them to publish to specific sub-channels within a pattern.

PSUBSCRIBE in the Redis CLI

The command for pattern matching is PSUBSCRIBE. Let's see how it works in the Redis CLI.

First, open a Redis CLI client and run:

PSUBSCRIBE log.*

The Asterisk (*) Wildcard

The * (asterisk) wildcard is used to match any sequence of characters (including an empty sequence) within a single part of a channel name.

For example, log.* will match log.app, log.system, but not log.web.server because * only matches up to the next . (dot).

If you then publish a message:

PUBLISH log.app "User logged in"

The Question Mark (?) Wildcard

The ? (question mark) wildcard matches exactly one character at a specific position.

This is useful when you expect a fixed number of characters, like an ID or a specific status code.

Try this pattern in your CLI:

PSUBSCRIBE device.temp.??

Combining Wildcards for Power

You can combine * and ? for even more granular control over your subscriptions. This allows for highly flexible and specific pattern matching.

Consider a pattern like chat.room.*.user.???. This pattern would match channels like chat.room.general.user.001 or chat.room.private.user.abc, but not chat.room.main.user.1 (too few chars for ???).

If a message is published to chat.room.general.user.007, it would be received by the above pattern.

Python `psubscribe` Example

Let's see how to implement pattern subscriptions using a Python client library (redis-py). This subscriber will listen for any message on channels matching events.*.

Run this code first, then the publisher in the next scene:

import redis
import time

r = redis.Redis(decode_responses=True)
pubsub = r.pubsub()

pubsub.psubscribe('events.*')

print("Subscribed to 'events.*'. Listening for 5 seconds...")

start_time = time.time()
for message in pubsub.listen():
    if message['type'] == 'pmessage':
        print(f"Pattern: {message['pattern']}")
        print(f"Channel: {message['channel']}")
        print(f"Data: {message['data']}")
    
    if time.time() - start_time > 5: # Listen for 5 seconds
        pubsub.punsubscribe('events.*')
        break
    time.sleep(0.01)

print("Subscriber stopped.")

Python Publisher Interaction

Now, run this Python publisher. The messages it sends will be caught by the pattern subscriber you just ran, demonstrating the power of pattern matching.

import redis
import time

r = redis.Redis(decode_responses=True)

print("Publishing messages...")

r.publish('events.user.signup', 'New user: Alice')
time.sleep(0.5)
r.publish('events.product.view', 'Product ID: 12345')
time.sleep(0.5)
r.publish('events.order.placed', 'Order ID: 98765')
time.sleep(0.5)
r.publish('metrics.cpu', 'CPU usage: 85%') # This won't match 'events.*'

print("Messages published.")

Real-World Use Cases

Pattern matching subscriptions are incredibly versatile for building real-time applications:

  • Monitoring & Analytics: Collect data from various services (e.g., metrics.cpu.*, metrics.memory.*).
  • Notifications: Send alerts for different event types (e.g., alert.high_priority.*).
  • Multi-tenant Systems: Isolate messages for different tenants (e.g., tenant.123.events.*).
  • Dynamic Routing: Route messages to different handlers based on their channel patterns.

Test Your Pattern Skills

A client uses PSUBSCRIBE with the pattern device.*.status.?. Which of these published channel names would it receive messages from?

Recap: Dynamic Pub/Sub

You've learned how Redis PSUBSCRIBE allows for incredibly flexible and dynamic message routing in your applications. By using the * and ? wildcards, you can listen to broad categories of events or very specific sub-channels.

This capability is fundamental for building scalable and decoupled real-time systems, enabling powerful event-driven architectures.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Langganan Pencocokan Pola” gratis?

Ya — teks lengkap “Langganan Pencocokan Pola” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Redis Caching & Messaging (Pub/Sub, Streams), upgrade ke CoddyKit PRO. Kursus Redis Caching & Messaging (Pub/Sub, Streams) mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Langganan Pencocokan Pola”?

Manfaatkan `PSUBSCRIBE` untuk berlangganan ke beberapa kanal berdasarkan pola sehingga fleksibilitas meningkat. Kamu berlatih Redis Caching & Messaging (Pub/Sub, Streams) dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Redis Caching & Messaging (Pub/Sub, Streams)?

Tidak diperlukan pengalaman sebelumnya. Redis Caching & Messaging (Pub/Sub, Streams) di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Langganan Pencocokan Pola” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Redis Caching & Messaging (Pub/Sub, Streams) ini?

Ya. Setiap pelajaran Redis Caching & Messaging (Pub/Sub, Streams) menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Langganan Pencocokan Pola
  2. Merancang Obrolan Waktu Nyata
  3. Arsitektur Berbasis Peristiwa
  4. Melacak Kehadiran dan Status Daring
← Kembali ke Redis Caching & Messaging (Pub/Sub, Streams)