Streaming dei dati con Redis
Nel mondo moderno, i dati vengono generati continuamente da piattaforme di social media, siti Web e dispositivi IoT. Quindi, lo streaming dei dati è inarrestabile. Un flusso può essere identificato come una serie di eventi generati da più fonti simultanee. Ad esempio, una stazione meteorologica genera dati meteorologici in una determinata posizione ogni ora. Ogni evento è costituito da dati meteorologici come temperatura, umidità, velocità del vento e direzione.
Redis Streams aiutano a catturare, gestire e dare un senso a questa grande quantità di dati in streaming.
Di solito, le fonti che generano dati o scrivono in un flusso sono chiamate produttori. Ogni produttore aggiunge una nuova voce al flusso Redis con un ID evento univoco in cui un evento è costituito da una o più coppie di valore di campo simili a un hash Redis. Dall'altro lato, i consumatori stanno leggendo dal flusso per generare alcune intuizioni significative. I produttori e i consumatori non hanno bisogno di conoscere i reciproci dettagli di implementazione, rendendo i flussi di Redis più robusti.
Redis Stream Voci e macro nodi
Il tipo di flusso di Redis si basa su strutture di dati radix-albero ampiamente utilizzate. Di solito, un albero radix è costituito da diversi nodi macro in cui un nodo macro può archiviare più voci di flusso. Poiché l'albero Radix è un albero di prefisso ottimizzato dalla memoria, i flussi Redis possono essere utilizzati con un basso consumo di memoria. Inoltre, gli alberi Radix sottostanti consentono ai flussi di accedere ai dati in modo casuale o all'interno di un intervallo specificato a maggiore efficienza.
Il comando XADD aggiunge una nuova voce a un nodo macro nel flusso. Quando aggiungi una voce, è immutabile. Quindi, si chiama struttura di dati solo per appendici.
Il comando XDEL
In alcuni casi, il mantenimento di milioni di dati storici di flusso potrebbe non valere la pena a causa delle scadenza dei dati. Pertanto, i flussi Redis supportano la cancellazione delle voci dalla struttura dei dati e liberano un po 'di memoria. Possiamo utilizzare il comando XDEL per eliminare una voce da un flusso specificato.
Sintassi:
Xdel[entry_id…]
Il comando XDEL accetta più entry_ids. Quindi, puoi eliminare più voci per comando. Questo comando restituisce il conteggio delle voci del flusso eliminato. Ogni volta che il ret_id indicato non esiste in un flusso, il conteggio restituito è inferiore al conteggio dell'ID specificato.
Meccanismo di cancellazione della voce Redis Stream
Il comando XDEL non scarica subito le voci del flusso. Invece, segna la voce come eliminata per prima. Quindi, la voce del flusso continuerà a utilizzare la memoria allocata. La memoria verrà rilasciata quando tutte le voci appartenenti a un macro nodo sono state eliminate. Costringerebbe il server Redis a rilasciare la memoria per quel macro nodo.
Esempio 1: Elimina la vecchia immissione dei dati meteorologici da un flusso
Creiamo innanzitutto un flusso per archiviare i dati meteorologici a San-Francisco City utilizzando il comando XADD. Supponiamo che i sensori producano dati quotidianamente a mezzogiorno. Quindi, aggiungeremo dati per tre giorni in questo esempio.
XADD SanfRanciscoweather * temp 18.4 Vento 12 Umidità 67
XADD SanfRanciscoweather * temp 12.6 vento 5 umidità 34
XADD SanfRanciscoweather * Temp 5 Wind 1 Umidità 23
Supponiamo che la prima voce sia dell'ultimo mese e non è necessario tenere traccia dei dati del mese precedente.
Quindi, possiamo usare il comando XDEL per eliminare la prima voce con l'ID 165649371190-0.
XDEL SanfRanciscoweather 1656493771190-0
Il comando XDEL ha restituito l'intero 1, il che significa che solo una voce è stata eliminata dal flusso.
Usiamo il comando XRange per leggere lo streaming e verificare che l'ID di voce 165649371190-0 è stato contrassegnato come cancellato.
XRANGE SanfRanciscoweather - +
Come previsto, sono disponibili solo le ultime due voci e la prima voce è stata eliminata.
Esempio 2: Elimina più voci meteorologiche da un flusso
Diciamo che dobbiamo eliminare più voci da un flusso contemporaneamente. Il comando XDEL lo supporta. È possibile specificare gli ID di iscrizione come mostrato nei seguenti.
Elimineremo le restanti due voci dal flusso di SanfriCcoweather che abbiamo creato nell'esempio precedente. 1656493789125-0 e 1656493802770-0 sono gli ID delle restanti due voci.
XDEL SanfRanciscoweather 1656493789125-0 1656493802770-0
Come previsto, il valore di restituzione del comando è 2, che indica che sono state eliminate due voci.
Leggiamo il flusso
Il flusso di Sanfranciscoweather è vuoto.
Conclusione
I flussi di Redis possono essere identificati come una serie di eventi prodotti da fonti simultanee. Un flusso può contenere diverse voci in cui ogni voce ha un ID univoco ed è composto da coppie di valore di campo. I flussi Redis si basano sulla struttura dei dati dell'albero di Radix, rendendoli altamente efficienti e ottimizzati dalla memoria. Le voci aggiunte a un flusso possono essere eliminate utilizzando il comando Redis XDEL. Questo comando segna la voce come eliminato invece di scaricare la voce e rilasciare la memoria. Reclama la memoria quando tutte le voci di un macro nodo sono contrassegnate come eliminate.