Redis Pub/Sub
Pub/Sub è un mezzo per raccogliere dati da un numero qualsiasi di editori di dati e consentire a 1 o più abbonati di consumare il feed in tempo reale, senza doversi collegare direttamente agli editori. Questo modello consente ai sistemi di scalare più facilmente e permette di aggiungere o rimuovere editori e abbonati in qualsiasi momento.
Redis consente la creazione di canali Pub/Sub ai quali si interfacciano editori e sottoscrittori. I messaggi di un canale vengono inviati al massimo una volta a ogni sottoscrittore, il che li rende ideali per le azioni di attivazione che non devono essere duplicate, ma attenzione perché una volta consegnato, un messaggio di canale non viene conservato.
Casi d'uso:
- Messaggio in tempo reale.
- Chat effimera multiutente.
- Streaming dei log.
Abbonamento a un canale
Un abbonato deve semplicemente inviare un "SUBSCRIBE
> SUBSCRIBE mychannel
Se un abbonato ha bisogno di iscriversi a più di un canale, anche questo è possibile:
> SUBSCRIBE mychannel1 mychannel2 mychannel3
L'iscrizione a un canale implica che l'abbonato riceverà tutti i messaggi pubblicati su quel canale dopo essersi iscritto. I messaggi più vecchi non vengono conservati, quindi l'abbonato deve essere connesso e iscritto per ricevere i messaggi man mano che si presentano.
Se il canale non esiste, l'abbonato non vedrà alcun errore, né alcun messaggio.
Pubblicare su un canale
Un editore può pubblicare su un canale con il comando " PUBLISH <channel> <message>:
> PUBLISH mychannel "my first message"
e gli eventuali abbonati riceveranno il messaggio come segue:
1) "message"
2) "mychannel"
3) "my first message"
Il messaggio di sottoscrizione include il nome del canale e il messaggio stesso.
Un modello comune è quello di inviare oggetti JSON come testo del messaggio:
> PUBLISH mychannel '{"id":"1234","name":"db14","msg":"Out of Memory"}'
Il valore restituito da 'PUBLISH è un numero intero che indica al chiamante quanti abbonati hanno ricevuto il messaggio.
Abbonamento selettivo
Invece di abbonarsi a interi canali, è possibile abbonarsi a canali jolly. Con una denominazione prudente dei canali, può essere utile vedere, ad esempio, tutti i registri di un'applicazione, solo i registri di produzione o solo i registri del database di produzione.
> PSUBSCRIBE *
> PSUBSCRIBE prod_*
> PSUBSCRIBE prod_database_*
> PSUBSCRIBE prod_database_db57_activity_*
Cancellazione dell'iscrizione
Un abbonato può annullare l'iscrizione a tutti i canali sottoscritti con:
> UNSUBSCRIBE