Redis-caching og meddelelser (Pub/Sub, Streams) · Lektion

Abonnementer med pattern matching

Brug `PSUBSCRIBE` til at abonnere på flere kanaler baseret på mønstre og opnå større fleksibilitet.

Lektion 1 af 411 trin

Abonnementer med pattern matching er en gratis Redis-caching og meddelelser (Pub/Sub, Streams)-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Redis-caching og meddelelser (Pub/Sub, Streams), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Redis-caching og meddelelser (Pub/Sub, Streams)-kurset indeholder 4 lektioner i alt.

Fleksible abonnementer med mønstre

Velkommen til en effektiv funktion i Redis Pub/Sub: abonnementer med mønstergenkendelse. I stedet for at abonnere på ét bestemt kanalnavn kan du abonnere på flere kanaler ved hjælp af fleksible mønstre.

Det giver programmet mulighed for at lytte efter et bredere udvalg af relaterede meddelelser med ét abonnement, så håndteringen af meddelelser bliver mere dynamisk.

Hvorfor bruge mønstergenkendelse?

Forestil dig, at du har mange tjenester, der hver især udgiver hændelser til kanaler som service.auth.login, service.orders.created eller service.inventory.updated.

  • Centraliseret logning: En enkelt logningstjeneste kan abonnere på service.* for at opfange alle hændelser.
  • Dynamisk hændelseshåndtering: Reagér nemt på nye hændelsestyper uden at ændre abonnementskoden.
  • Mikrotjenester: Afkobl tjenester yderligere ved at give dem mulighed for at udgive til bestemte underkanaler inden for et mønster.

PSUBSCRIBE i Redis CLI

Kommandoen til mønstergenkendelse er PSUBSCRIBE. Lad os se, hvordan den fungerer i Redis CLI.

Åbn først en Redis CLI-klient, og kør:

PSUBSCRIBE log.*

Jokertegnet stjerne (*)

Jokertegnet * (stjerne) bruges til at matche enhver tegnsekvens (herunder en tom sekvens) inden for en enkelt del af et kanalnavn.

For eksempel matcher log.* log.app og log.system, men ikke log.web.server, fordi * kun matcher frem til det næste . (punktum).

Hvis du derefter udgiver en meddelelse:

PUBLISH log.app "User logged in"

Jokertegnet spørgsmålstegn (?)

Jokertegnet ? (spørgsmålstegn) matcher præcis ét tegn på en bestemt position.

Det er nyttigt, når du forventer et fast antal tegn, f.eks. et id eller en bestemt statuskode.

Prøv dette mønster i din CLI:

PSUBSCRIBE device.temp.??

Kombination af jokertegn giver større fleksibilitet

Du kan kombinere * og ? for at få endnu mere detaljeret kontrol over dine abonnementer. Det giver en meget fleksibel og specifik mønstergenkendelse.

Overvej et mønster som chat.room.*.user.???. Dette mønster matcher kanaler som chat.room.general.user.001 og chat.room.private.user.abc, men ikke chat.room.main.user.1 (for få tegn til ???).

Hvis en meddelelse udgives til chat.room.general.user.007, modtages den af ovenstående mønster.

Python-eksempel på `psubscribe`

Lad os se, hvordan man implementerer mønsterabonnementer ved hjælp af et Python-klientbibliotek (redis-py). Denne abonnent lytter efter alle meddelelser på kanaler, der matcher events.*.

Kør denne kode først og derefter udgiveren i den næste 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.")

Interaktion med Python-udgiver

Kør nu denne Python-udgiver. De meddelelser, den sender, opfanges af den mønsterabonnent, du netop har kørt, så du kan se styrken ved mønstergenkendelse.

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.")

Praktiske anvendelser

Abonnementsmønstre er utroligt alsidige til at bygge realtidsapplikationer:

  • Overvågning og analyse: Indsaml data fra forskellige tjenester (f.eks. metrics.cpu.*, metrics.memory.*).
  • Notifikationer: Send advarsler for forskellige hændelsestyper (f.eks. alert.high_priority.*).
  • Systemer med flere lejere: Isolér meddelelser for forskellige lejere (f.eks. tenant.123.events.*).
  • Dynamisk routing: Dirigér meddelelser til forskellige håndteringsfunktioner baseret på deres kanalmønstre.

Test dine færdigheder i mønstre

En klient bruger PSUBSCRIBE med mønsteret device.*.status.?. Fra hvilke af disse publicerede kanalnavne vil den modtage meddelelser?

Opsummering: Dynamisk Pub/Sub

Du har lært, hvordan Redis PSUBSCRIBE giver mulighed for utrolig fleksibel og dynamisk routing af meddelelser i dine applikationer. Ved at bruge jokertegnene * og ? kan du lytte efter brede kategorier af hændelser eller meget specifikke underkanaler.

Denne funktion er grundlæggende, når du skal bygge skalerbare og løst koblede realtidssystemer, og den gør effektive hændelsesdrevne arkitekturer mulige.

Gratis at komme i gang

Lær Redis-caching og meddelelser (Pub/Sub, Streams) med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Abonnementer med pattern matching” gratis?

Ja — alle 3 lektioner i læringssporet Redis-caching og meddelelser (Pub/Sub, Streams), inklusive “Abonnementer med pattern matching”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Redis-caching og meddelelser (Pub/Sub, Streams)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Abonnementer med pattern matching”?

Brug `PSUBSCRIBE` til at abonnere på flere kanaler baseret på mønstre og opnå større fleksibilitet. Du øver dig i Redis-caching og meddelelser (Pub/Sub, Streams) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Redis-caching og meddelelser (Pub/Sub, Streams)?

Der kræves ingen tidligere erfaring. Redis-caching og meddelelser (Pub/Sub, Streams) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Abonnementer med pattern matching”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Redis-caching og meddelelser (Pub/Sub, Streams)-lektion?

Ja. Alle Redis-caching og meddelelser (Pub/Sub, Streams)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Abonnementer med pattern matching
  2. Design af realtidschat
  3. Eventdrevet arkitektur
  4. Sporing af tilstedeværelse og onlinestatus
← Tilbage til Redis-caching og meddelelser (Pub/Sub, Streams)