Data streaming med redis
I den moderne verden genereres data kontinuerlig fra sosiale medieplattformer, nettsteder og IoT-enheter. Derfor er datastrømming ustoppelig. En strøm kan identifiseres som en serie hendelser generert fra flere samtidige kilder. For eksempel genererer en værstasjon værdata på et gitt sted hver time. Hver hendelse består av værdata som temperatur, fuktighet, vindhastighet og retning.
Redis Streams er med på å fange opp, administrere og gi mening om denne store mengden streamede data.
Vanligvis kalles kildene som genererer data eller skriver til en strøm produsenter. Hver produsent legger til en ny oppføring til Redis-strømmen med en unik hendelses-ID der en hendelse består av ett eller flere feltverdipar som ligner på en Redis-hash. I den andre enden leser forbrukerne fra strømmen for å generere noen meningsfull innsikt. Produsentene og forbrukerne trenger ikke å vite om hverandres implementeringsdetaljer, noe som gjør Redis -strømmer mer robuste.
Redis Stream -oppføringer og makronoder
Redis Stream-type er basert på mye brukte radix-tre datastrukturer. Vanligvis består et radix-tre av flere makronoder der en makronode kan lagre flere strømoppføringer. Siden radix-treet er et minneoptimalisert prefiks-tre, kan Redis-strømmer brukes med lavt minneforbruk. Videre muliggjør de underliggende radikstrærne strømmer å få tilgang til data tilfeldig eller innenfor et spesifisert område med høyere effektivitet.
XADD -kommandoen legger til en ny oppføring til en makronode i strømmen. Når du legger til en oppføring, er det uforanderlig. Derfor kalles det en datastruktur for bare appendinger.
XDEL -kommandoen
I noen tilfeller kan det ikke være verdt å opprettholde millioner av historiske strømdata. Derfor støtter Redis Streams sletting av oppføringer fra datastrukturen og frigjør noe minne. Vi kan bruke XDEL -kommandoen til å slette en oppføring fra en spesifisert strøm.
Syntaks:
Xdel[entry_id…]
XDEL -kommandoen godtar flere entry_ids. Derfor kan du slette flere oppføringer per kommando. Denne kommandoen returnerer antallet av de slettede strømoppføringene. Hver gang den gitte oppføringen ikke eksisterer i en strøm, er det returnerte antallet mindre enn den spesifiserte ID -antallet.
Redis Stream Entry slettingsmekanisme
XDEL -kommandoen dumper ikke strømmenes oppføringer straks. I stedet markerer det oppføringen som slettet først. Derfor vil strømoppføringen fortsette å bruke det tildelte minnet. Minnet vil bli utgitt når alle oppføringene som tilhører en makronode er blitt merket slettet. Det ville tvinge Redis -serveren til å frigjøre minnet for den makronoden.
Eksempel 1: Slett gammel værdatainnføring fra en strøm
La oss først opprette en strøm for å lagre værdata i San-Francisco City ved å bruke XADD-kommandoen. Anta at sensorene produserer data daglig ved middagstid. Derfor vil vi legge til data i tre dager i dette eksemplet.
XADD Sanfranciscoweather * Temp 18.4 Vind 12 Fuktighet 67
Xadd sanfranciscowather * temp 12.6 Vind 5 Fuktighet 34
Xadd Sanfranciscowather * Temp 5 Vind 1 Fuktighet 23
La oss anta at den første oppføringen er fra den siste måneden, og vi trenger ikke å følge med på forrige måneds data.
Derfor kan vi bruke XDEL-kommandoen til å slette den første oppføringen med ID 1656493771190-0.
XDEL SANFRANCISCOWATHER 1656493771190-0
XDEL -kommandoen returnerte heltallet 1, som betyr at bare en oppføring er slettet fra strømmen.
La oss bruke Xrange-kommandoen til å lese strømmen og bekrefte at inngangs-ID 1656493771190-0 er blitt merket som slettet.
Xrange Sanfranciscowather - +
Som forventet er bare de to siste oppføringene tilgjengelige, og den første oppføringen er slettet.
Eksempel 2: Slett flere væroppføringer fra en strøm
La oss si at vi må slette flere oppføringer fra en strøm samtidig. XDEL -kommandoen støtter det. Du kan spesifisere oppførings -ID -ene som vist i det følgende.
Vi sletter de gjenværende to oppføringene fra Sanfranciscoweather -strømmen vi opprettet i forrige eksempel. 1656493789125-0 og 1656493802770-0 er IDS for de resterende to oppføringene.
XDEL SANFRANCISCOWEATHER 1656493789125-0 1656493802770-0
Som forventet er kommandoavkastningsverdien 2, som indikerer at to oppføringer er slettet.
La oss lese strømmen
Sanfranciscoweather -strømmen er tom.
Konklusjon
Redis -strømmer kan identifiseres som en serie hendelser produsert av samtidige kilder. En strøm kan inneholde flere oppføringer der hver oppføring har en unik ID og består av feltverdipar. Redis Streams er basert på Radix Tree Data Structure, noe som gjør dem svært effektive og minneoptimaliserte. Oppføringene som er lagt til en strøm kan slettes ved hjelp av Redis XDEL -kommandoen. Denne kommandoen markerer oppføringen som slettet i stedet for å dumpe oppføringen og frigjøre minnet. Det gjenvinner minnet når alle oppføringene til en makronode er merket som slettet.