Redis rpoplpush

Redis rpoplpush
“Redis har flere innebygde datatyper, og hver enkelt er til forskjellige formål. Listen er en av de mye brukte datatypene som kan lagre mer enn 4 milliarder strenger på en spesifisert Redis -nøkkel. Den spesielle tingen med Redis -listen er at den tillater innsetting og fjerning av elementer fra både hodet og halen, noe som har konstant tidskompleksitet. De Lpush og Rpush brukes til å sette inn strengelementer i nærheten av hodet og halen på en liste. Også Lpop og Rpop Fjern listeelementer i hodet og halen.”

Rpoplpush -kommandoen

RPOPLPUSH -kommandoen brukes til å poppe et element fra halen til en kildeliste og sett den inn i spissen for en destinasjonsliste som er lagret på en gitt tast. Både fjerning og innsetting ved kilde- og destinasjonslister skjer samtidig.

La oss anta at en liste som er lagret på tasten EN Inneholder strengene "eple", "oransje" og "banan". Videre har en annen liste som er lagret på Key B elementene "druer", og "avokado". Hvis vi ringer RPOPLPush -kommandoen der liste A er kilden og listen B er destinasjonen, vil den fjerne "banan" -strengen fra liste A og sett den inn rett før "druer" -elementet i liste B.

Syntaks

RPOPLPUSH -kommandoen har følgende syntaks.

Rpoplpush source_list_key destination_list_key

Source_list_key: Dette er redis -nøkkelen til listen som du trenger for å fjerne et element.

destinasjon_list_key: Dette er redis -nøkkelen til listen som du trenger for å sette inn det poppede elementet.

Denne kommandoen returnerer et strengrespons som er et poppet listeelement fra kildelisten hvis kildelisten er tilgjengelig. Når kildelisten ikke eksisterer, kommer kommandoen tilbake en null verdi. I noen tilfeller kan kilden og destinasjonen være den samme. Derfor vil den utføre både innsetting og fjerning i samme liste.

Bruk sak 01 - Implementering av meldingskø

Redis -lister har for det meste blitt brukt i implementeringer. Tenk på en situasjon der en nettverkssvikt eller et serverproblem kastes; forbrukeren kan miste poppede data før behandlingen begynner. Det kan være et tap som forbrukerne ikke kan komme seg i løpet av livet. Derfor er det nødvendig med en mer pålitelig kø. La oss bruke RPOPLPush -kommandoen for å implementere en pålitelighetskø.

La oss lage en liste Prosessliste med noen få elementer, som vist i det følgende. LPush -kommandoen kan brukes til å produsere noen data i den spesifiserte listen.

LPush prosessliste "P1" "P2" "P3" "P4"

Kommandoen ovenfor vil skyve elementer i nærheten av hodet på listen. Derfor vil elementene bli lagret i følgende rekkefølge.

"P4" | "P3" | "P2" | "P1"

Deretter vil vi bruke Rpoplpush Kommando som klient om å poppe det siste elementet i listeprosesslisten og skyve den inn i en ny liste lagret på nøkkelen Pålitelighet.

rpoplpush prosessliste pålitelighet

Ideelt sett må "P1" -elementet poppes fra kildelisten, og strengen "P1" skal være utgangen fra denne kommandoen. Samtidig skyves dette elementet inn i listen som er lagret på tasten Pålitelighet. La oss inspisere det ved hjelp av Lrange kommando.

Lrange pålitelighetsQUEUE 0 5

Produksjon:

Vi vil ringe Lrange Kommando på listen Prosessliste også.

Lrange prosessliste 0 5

Produksjon:

Som forventet fjernes "P1" -elementet fra kildelisten. De Rpoplpush Kommando anbefales å bruke med pålitelighetskøer.

Bruk sak 02 - Implementering av pålitelige arbeidernoder for å behandle individuelle applikasjoner

Som nevnt kan kilden og destinasjonen være den samme for rpoplpush -kommandoen. I dette tilfellet blir innsetting og fjerning utført i samme liste. Dette kan være nyttig når du implementerer et overvåkningssystem for å behandle hundrevis av intervjuapplikasjoner for en gitt jobb.

Flere arbeidere og iterere over listen til alle applikasjonene er behandlet. Det beste med denne typen sirkulære kø er at den ikke vil miste noen søknad på grunn av at varen blir satt inn på samme liste og til slutt mottatt av en av arbeiderne i neste iterasjon.

La oss lage en ny liste, JOBAPLICATIONLIST.

LPUSH JOBAPPLICATIONLIST CV1 CV3 CV7 CV10

Listen skal se ut som følgende.

"CV10" | "CV7" | "CV3" | "CV1"

La oss nå ringe RPOPLPush -kommandoen med samme liste som kilde- og destinasjonsargumentene som vises i det følgende.

RPOPLPUSH JOBAPLICATIONLIST JOBAPLICATIONLIST

Som forventet er haleelementet “CV1” fjernet og returnert av kommandoen.

Vi kan inspisere JOBAPLICATIONLIST Liste igjen for å sjekke om “CV1” -elementet er satt inn i nærheten av hodet på samme liste.

Lrange JobApplicationList 0 5

Som du kan se, er "CV1" -elementet blitt satt inn fra hodet på listen som er lagret på nøkkelen JOBAPLICATIONLIST. Sirkulærlisten kan brukes som en pålitelig måte å implementere overvåkningssystemer som dette.

Konklusjon

For å oppsummere er RPOPLPush -kommandoen en av de mye brukte kommandoene som har blitt brukt til å utføre både fjerning og innsetting av lister samtidig. Som du vet, aksepterer denne kommandoen kilde- og destinasjonslister som argumenter. Haleelementet på kildelisten vil bli poppet og satt inn i nærheten av hodet på destinasjonslisten som er lagret på en spesifisert nøkkel. Som diskutert brukes RPOPLPush -kommandoen til å implementere pålitelige køer i meldingssystemer og også i overvåkningssystemer der flere arbeidernoder fungerer på den gitte listen over elementer parallelt på en pålitelig måte med tapt utvinning utstyrt. Denne kommandoen er utdatert fra Redis versjon 6.2.0 og oppmuntret til å bruke Lmove kommando med IKKE SANT og VENSTRE argumenter.