Redis Klawisz skrótu EXPIRE

Redis Klawisz Skrotu Expire



Skróty Redis to specjalny rodzaj danych, który jest znacznie bardziej podobny do obiektu JSON, Java HashMap lub słownika Pythona. Ponadto jest to zbiór par pole-wartość, których można używać do modelowania obiektów domeny. Struktura danych skrótu Redis jest niezwykle wydajna pod względem pamięci, ponieważ każdy klucz skrótu może przechowywać do czterech miliardów par pól-wartość. Co najważniejsze, podstawowe operacje haszujące, takie jak HSET, HGET, HMGET itp., działają ze stałą złożonością czasową.


Klucze skrótu Redis mają nieskończony czas życia (TTL), co oznacza, że ​​są trwałe i są usuwane jawnie za pomocą poleceń takich jak DEL. W tym artykule skupimy się na ustawieniu TTL dla skrótów Redis za pomocą polecenia EXPIRE.







Redis EXPIRE Polecenie

Polecenie EXPIRE służy do ustawienia limitu czasu dla danego klucza skrótu Redis, zestawu, listy itp. Klucz Redis jest usuwany z bazy danych, jeśli limit czasu wygaśnie. Co najważniejsze, limit czasu jest nieskasowany, dopóki zawartość klucza nie zostanie usunięta lub nadpisana. Zmiana wartości skojarzonych z kluczem nie wpływa na czas wygaśnięcia.



Składnia polecenia EXPIRE jest następująca:



EXPIRE klucz wygasania_czas_sekund [ NX | GX | GT | LT ]


klucz: Klucz skrótu, listy lub zestawu, który należy ustawić, aby ustawić limit czasu.





expirty_time_seconds: Wartość limitu czasu w sekundach.

Polecenie EXPIRE akceptuje kilka opcjonalnych argumentów.



NX: Wartość limitu czasu jest ustawiana tylko wtedy, gdy określony klucz nie wygasł już.

XX: Gdy określony klucz ma istniejącą wartość limitu czasu, ustawiana jest nowa data wygaśnięcia.

GT: Jeśli nowa wartość limitu czasu jest większa niż istniejąca, ustawiany jest nowy termin wygaśnięcia.

LT: Nowa wartość limitu czasu jest ustawiana, jeśli istniejąca jest większa niż nowa.

Co najważniejsze, polecenie EXPIRE działa ze stałą złożonością czasową. Liczba całkowita 1 jest zwracana, jeśli wykonanie polecenia zakończyło się pomyślnie. Jeśli operacja nie powiedzie się z powodu błędnych argumentów lub nieistniejących kluczy, zwracane jest 0.

Użyjemy polecenia EXPIRE na hashach, aby ustawić czas wygaśnięcia, jak pokazano w poniższej sekcji:

Wygaś skrót Redis za pomocą polecenia EXPIRE

Załóżmy, że informacje o sesji na użytkownika są przechowywane w hashu Redis sesja:id:1000:użytkownik:10. Możemy użyć polecenia HMSET, aby utworzyć skrót Redis z wieloma parami pole-wartość w następujący sposób:

sesja hmset:id: 1000 :użytkownik: 10 Nazwa Użytkownika „jae” ciastko 'tak' hasło „389Ysu2”


Sprawdźmy utworzony skrót za pomocą polecenia HGETALL.

sesja hgetall:id: 1000 :użytkownik: 10



Ponadto sesja wygasa po 10 sekundach, jeśli użytkownik jest bezczynny przez ponad 60 sekund. Wygaśnięcie sesji jest osiągane przez ustawienie czasu wygaśnięcia skrótu, który przechowuje informacje o sesji.

Możemy użyć polecenia EXPIRE w następujący sposób:

wygasa sesja:id: 1000 :użytkownik: 10 10


Jak wspomniano, wartość limitu czasu jest ustawiona na 10 sekund.


Zgodnie z oczekiwaniami, zwracana wartość wynosi 1, co oznacza, że ​​TTL został pomyślnie ustawiony dla skrótu. Sprawdźmy, ile czasu pozostało do usunięcia klucza skrótu ze sklepu Redis. Polecenia TTL można używać w następujący sposób:

sesja ttl:id: 1000 :użytkownik: 10



Jak pokazano w danych wyjściowych, przed automatycznym usunięciem skrótu pozostały trzy sekundy. Po 10 sekundach wyjście polecenia TTL wygląda następująco:


Ponieważ wskazana jest odpowiedź -2 w postaci liczby całkowitej, skrót nie istnieje.

Ustaw limit czasu na podstawie istniejącego czasu wygaśnięcia

Polecenie EXPIRE akceptuje argumenty NX i XX, aby ustawić nowy limit czasu w oparciu o istnienie wygaśnięcia określonego skrótu. Stwórzmy nowy hash za pomocą brak limitu czasu klucz .

hmset noTimeOut nazwa 'test'


Spróbujmy ustawić nowe wygaśnięcie poprzedniego skrótu. Dodatkowo do polecenia EXPIRE przekazujemy również argument XX.

nie wygasa bez limitu czasu piętnaście XX


Ponieważ określamy XX w poleceniu, czas wygaśnięcia nie zostanie ustawiony. Opcja XX nie pozwala na ustawienie nowego czasu wygaśnięcia, jeśli nie ma istniejącego limitu czasu związanego z określonym kluczem skrótu.


Jeśli użyjemy NX opcja limitu czasu jest ustawiona na 15.

nie wygasa bez limitu czasu piętnaście NX



Polecenie EXPIRE zwraca odpowiedź w postaci liczby całkowitej 1, co oznacza, że ​​limit czasu jest ustawiony prawidłowo.

Ustaw limit czasu na podstawie istniejącej wartości limitu czasu

Opcje GT i LT mogą być użyte do ustawienia czasu wygaśnięcia skrótu na podstawie istniejącego limitu czasu.

Stwórzmy nowy hash o nazwie hashWithTimeout.

hmset hashWithTimeout pole1 wartość1


Następnie ustawiamy 200-sekundowy czas wygaśnięcia skrótu.

wygasa hashWithTimeout 200


Spróbujmy ustawić nowy limit czasu na 100 sekund dla skrótu wraz z opcją GT w następujący sposób:

wygasa hashWithTimeout 100 GT


Ponieważ określono opcję GT, polecenie EXPIRE sprawdzi, czy nowa wartość limitu czasu jest większa od istniejącej i ustawi nowy czas wygaśnięcia. W tym przykładzie nowy limit czasu nie jest większy niż istniejący limit czasu. W związku z tym polecenie nie ustawi nowego czasu wygaśnięcia i zwróci 0.


Użyjmy opcji LT zamiast GT. Ponieważ nowy czas wygaśnięcia jest krótszy niż obecny, następująca komenda powinna pomyślnie ustawić nowy limit czasu.

wygasa hashWithTimeout 100 LT


Wniosek

W skrócie, polecenie Redis EXPIRE służy do ustawienia wartości TTL dla danego klucza. Domyślnie klucze skrótu Redis nie są powiązane z żadnym limitem czasu, który jest nazywany nieulotnym. Jak wspomniano, polecenie EXPIRE służy do ustawiania wartości limitu czasu w hashu Redis. Zwykle skrót jest usuwany z magazynu danych Redis po upływie czasu określonego jako wartość limitu czasu. Jak pokazano w przykładach, polecenie EXPIRE akceptuje niektóre opcjonalne argumenty, takie jak XX, NX, GT i LT, aby ustawić wygaśnięcie skrótu na podstawie warunku.