Rzodkiew LSET

Rzodkiew Lset



Lista Redis to struktura danych zawierająca sekwencję elementów ciągu w kolejności wstawiania. Jest oparty na połączonej liście. Tak więc wstawienie elementu na głowę i ogon odbywa się w stałym czasie. Jedyną wadą list Redis jest to, że odpytywanie elementów za pomocą indeksu jest nieco kosztowne, co zajmuje czas wprost proporcjonalny do indeksu elementu uzyskującego dostęp. Powodem implementacji opartej na połączonych listach jest przyspieszenie wstawiania danych w przypadku bardzo długiej listy elementów.

Listy Redis mają indeksowanie oparte na 0. Pierwszy element jest oznaczony jako 0 ten indeks; drugi jest na 1 st indeks i tak dalej. Dostęp do elementów ogona z indeksami jest możliwy z indeksami ujemnymi, tak jak ostatni element jest indeksowany jako -1, przedostatni element to -2 i tak dalej.









Elementy listy można ustawić pod dowolnym indeksem za pomocą polecenia LSET, które opisano w poniższej sekcji.



Polecenie LSET

Polecenie LSET ustawia element w podanym indeksie listy Redis przechowywanej pod określonym kluczem. Ma następującą prostą składnię:





Element indeksu LSET list_key

klucz_listy : klucz listy Redis.

indeks : Indeks, w którym musisz ustawić element.



element : Element ciągu, który ma zostać ustawiony pod określonym indeksem.

To polecenie zwraca prosty ciąg „OK”, jeśli element został poprawnie ustawiony. Za każdym razem, gdy napotka indeks, który jest poza zakresem, polecenie LSET zwraca błąd.

Jednym z najczęstszych przypadków użycia list Redis jest przechowywanie postów w mediach społecznościowych i ich aktualizacji dla poszczególnych użytkowników. Polecenie LSET odgrywa tam ważną rolę, co omówiono w następnej sekcji.

Use Case – Zaktualizuj posty w mediach społecznościowych

Załóżmy wydarzenie, w którym firma prowadzi własną witrynę społecznościową z tysiącami użytkowników aktywnie publikujących posty i statusy. Zidentyfikowali, że listy Redis są odpowiednim kandydatem do przechowywania tych stanowisk i statusów, w których występuje częste wstawianie, a listy Redis wykonują wstawianie w stałym czasie.

Stwórzmy listę Redis dla danego użytkownika o identyfikatorze 100, która będzie używana do przechowywania postów i komunikatów o stanie tego konkretnego użytkownika. Użyjemy polecenia LPUSH, aby umieścić kilka fałszywych postów i komunikatów o stanie dla identyfikatora użytkownika 100.

LPUSH social-media:user:100 '2022-08-01:Miły dzień na rozpoczęcie.'
LPUSH social-media:user:100 '2022-08-05:Rozpocząłem nową pracę w linuxhint'
LPUSH social-media:user:100 '2022-08-06:Wspaniała impreza dzisiaj'
LPUSH social-media:user:100 '2022-08-07:Zły dzień!!!'

Wyjście

Załóżmy, że użytkownik o identyfikatorze 100 zaktualizuje jeden ze swoich starych postów. Załóżmy, że trzeci post, który opublikował, wymaga korekty. Polecenie LSET może to łatwo osiągnąć, jak pokazano poniżej.

Ponieważ trzeci element znajduje się pod indeksem 2 od głowy. Zaktualizujemy go w następujący sposób:

LSET social-media:user:100 2 „Rozpoczął nową rolę jako pisarz w LinuxHint”

Wyjście

Zgodnie z oczekiwaniami polecenie zostało wykonane pomyślnie, a element w drugim indeksie został zaktualizowany. Sprawdźmy ponownie listę w następujący sposób:

Możemy zrobić to samo, określając indeks z ogona w następujący sposób:

LSET social-media:user:100 -2 'Rozpoczął nową rolę jako pisarz w LinuxHint'

Zgodnie z oczekiwaniami, trzeci element został ustawiony na nowy ciąg „Zadanie rozpoczęte w LinuxHINT”.

Jeśli określisz indeks, który jest poza zakresem, zgłosi błąd, jak pokazano poniżej:

LSET social-media:user:100 6 'Zadanie rozpoczęte w LinuxHINT'

Wyjście

Wniosek

Polecenie LSET ustawia element listy o określonym indeksie na dany element listy Redis przechowywanej pod danym kluczem. Ponieważ indeksy listy Redis zaczynają się od 0, jest to pierwszy element. Indeks 1 to drugi element listy i tak dalej. Jak już wspomniano, indeksy elementów zaczynające się od ogona można określić za pomocą liczb ujemnych, np. -1 to ostatni element, -2 to element przed ostatnim i tak dalej. Za każdym razem, gdy zostanie przekazany nieistniejący indeks, polecenie LSET zwróci błąd. Co więcej, to polecenie zwraca prosty ciąg wyjściowy po pomyślnym wykonaniu.