Redis lset

Redis lset
En Redis -liste er en datastruktur som inneholder en sekvens av strengelementer i innsettingsrekkefølgen. Det er basert på lenket liste. Så innsetting av et element i hodet og halen utføres i konstant tid. Den eneste ulempen med Redis -listene er at spørringselementer av en indeks er litt kostbar, noe som tar tid direkte proporsjonalt med indeksen for tilgangselementet. Årsaken bak den koblede listebaserte implementeringen er å gjøre datainnsettingen raskere for en veldig lang liste med elementer.

Redis-lister har 0-basert indeksering. Det første elementet er utpekt som 0th indeks; Den andre er på 1st indeks, og så videre. Å få tilgang til haleelementer med indeksene er mulig med negative indekser som det siste elementet indekseres som -1, det nest siste elementet er -2, og så videre.

Listeelementene kan settes på en gitt indeks med LSET -kommandoen, som er beskrevet i følgende avsnitt.

LSET -kommandoen

LSET -kommandoen setter et element på den gitte indeksen for en Redis -liste som er lagret på den spesifiserte tasten. Den har følgende enkel syntaks:

Lset list_key indekselement

list_key: Nøkkelen til Redis -listen.

indeks: Indeksen der du trenger å angi et element.

element: Strengelementet som skal settes til den spesifiserte indeksen.

Denne kommandoen returnerer en enkel streng “OK” hvis elementet er satt riktig. Hver gang den møter en indeks som er utenfor rekkevidden, returnerer LSET -kommandoen en feil.

En av de vanligste brukssakene på Redis -listene er å lagre innlegg i sosiale medier og deres oppdateringer for enkeltbrukere. LSET -kommandoen spiller en viktig rolle der, som diskutert i følgende avsnitt.

Bruk sak - Oppdater innlegg i sosiale medier

La oss anta en hendelse der et selskap opprettholder sitt eget nettsted for sosiale medier med tusenvis av brukere som aktivt legger ut innlegg og statuser. De har identifisert at Redis -listene er den passende kandidaten til å holde disse innleggene og statusene der hyppig innsetting skjer, og Redis -listene utfører innsetting i konstant tid.

La oss lage en Redis -liste for en gitt bruker -ID 100 som vil bli brukt til å lagre den aktuelle brukerens innlegg og statusmeldinger. Vi vil bruke LPush -kommandoen til å sette noen dummy -innlegg og statusmeldinger for bruker -ID 100.

LPush Social-Media: Bruker: 100 "2022-08-01: Fin dag å starte med.""
LPush Social-Media: Bruker: 100 "2022-08-05: Startet ny jobb på Linuxhint"
LPush Social-Media: Bruker: 100 "2022-08-06: Flott fest i dag"
LPush Social-Media: Bruker: 100 "2022-08-07: Dårlig dag!!!""

Produksjon

Anta at brukeren med bruker -ID 100 vil oppdatere et av de gamle innleggene hans. Anta at det tredje innlegget som han har lagt ut, trenger en viss korreksjon. LSET -kommandoen kan enkelt oppnå dette, som vist i det følgende.

Siden det tredje elementet er ved indeks 2 fra hodet. Vi vil oppdatere det som følger:

LSET Social-Media: Bruker: 100 2 "Startet ny rolle som forfatter hos Linuxhint"

Produksjon

Som forventet ble kommandoen utført vellykket, og elementet ved den andre indeksen ble oppdatert. La oss kontrollere listen på nytt som følger:

Vi kan gjøre det samme ved å spesifisere indeksen fra halen som følger:

LSET Social -Media: Bruker: 100 -2 "Startet ny rolle som forfatter hos Linuxhint"

Som forventet er det tredje elementet satt til den nye strengen "Jobb startet på Linuxhint".

Hvis du spesifiserer en indeks som er utenfor rekkevidde, vil den øke en feil, som vist på følgende:

LSET Social-Media: Bruker: 100 6 "Jobb startet på Linuxhint"

Produksjon

Konklusjon

LSET -kommandoen setter et listeelement i en spesifisert indeks til et gitt element i Redis -listen som er lagret på en gitt tast. Siden Redis List -indeksene starter fra 0, er det det første elementet. Indeks 1 er det andre elementet på listen, og så videre. Som diskutert, kan indeksene for elementene som starter fra halen spesifiseres ved hjelp av negative tall som -1 er det siste elementet, -2 er elementet før sist, og så videre. Hver gang en ikke-eksisterende indeks sendes, vil LSET-kommandoen returnere en feil. Videre returnerer denne kommandoen en enkel strengutgang over den vellykkede utførelsen.