Redis Hachhes to specjalny rodzaj danych, który jest o wiele bardziej podobny do obiektu JSON, Java Hashmap lub słownika Pythona. Ponadto jest to zbiór par wartości pola, które można użyć do modelowania obiektów domeny. Struktura danych Hash Redis jest niezwykle wydajna pamięć, w której każdy klucz skrótu może przechowywać do czterech miliardów par terenowych. Co najważniejsze, fundamentalne operacje skrótu, takie jak HSET, HGET, HMGET itp. działać ze stałą złożonością czasu.
Klucze Hash Redis mają nieskończony czas na życie (TTL), co oznacza, że są one uporczywe, są one jawnie usuwane używając poleceń takich jak Del. W tym artykule skupimy się na ustawieniu TTL dla Hasze Redis za pomocą polecenia wygasającego.
Polecenie Redis wygasa
Polecenie wygasające służy do ustawiania limitu czasu na danym kluczu skrótu Redis, zestawu, listy itp. Klucz Redis jest usuwany z bazy danych, jeśli upływa limit czasu. Co najważniejsze, limit czasu jest niejasna, dopóki zawartość klucza nie zostanie usunięta lub zastąpiona. Zmiana wartości związanych z kluczem nie wpływa na czas ważności.
Składnia polecenia wygasające jest następujące:
Klucz wygasa Exiry_Time_Seconds [NX | GX | Gt | Lt]
klucz: Klucz skrótu, listy lub zestawu, który musisz ustawić limit czasu.
expirty_time_seconds: Wartość limitu czasu w sekundach.
Kilka opcjonalnych argumentów jest akceptowanych przez polecenie wygasające.
NX: Wartość limitu czasu jest ustawiana tylko wtedy, gdy określony klucz nie ma już ważności.
XX: Gdy określony klucz ma istniejącą wartość limitu czasu, ustawiona jest nowa wygaśnięcie.
GT: Jeśli nowa wartość limitu czasu jest większa niż istniejąca, nowa wygaśnięcie jest ustawiona.
LT: Nowa wartość limitu czasu jest ustawiana, jeśli istniejąca jest większa niż nowa.
Co najważniejsze, polecenie wygasające działa ze stałą złożonością czasu. Liczba całkowita 1 jest zwracana, jeśli wykonanie polecenia zakończy się powodzeniem. Jeśli operacja się nie powiedzie z powodu niewłaściwych argumentów lub nieistniejących kluczy, 0 jest zwracane.
Użyjemy polecenia wygasającego na skrótach, aby ustawić czas wygaśnięcia, jak pokazano w poniższej sekcji:
Wygasły skrót Redis za pomocą polecenia wygasającego
Załóżmy, że informacje o sesji na użytkownika są przechowywane w skrócie Redis Sesja: id: 1000: Użytkownik: 10. Możemy użyć polecenia HMSET, aby utworzyć skrót Redis z wieloma parami wartości pola w następujący sposób:
Sesja HMSET: Identyfikator: 1000: Użytkownik: 10 nazwa użytkownika „Jae” Cookie „Tak” hasło 389ysu2 ”
Sprawdźmy utworzony skrót za pomocą polecenia HGETALL.
Sesja Hgetall: Identyfikator: 1000: Użytkownik: 10
Ponadto sesja wygasa po 10 sekundach, jeśli użytkownik jest bezczynny przez ponad 60 sekund. Wygaśnięcie sesji osiąga się poprzez ustalenie czasu ważności dla skrótu, który przechowuje informacje o sesji.
Możemy użyć komendy Exire w następujący sposób:
Sesja wygasająca: Identyfikator: 1000: Użytkownik: 10 10
Jak wspomniano, wartość limitu czasu jest ustawiona na 10 sekund.
Zgodnie z oczekiwaniami wartość zwrotna wynosi 1, co oznacza, że TTL jest z powodzeniem ustawiony dla skrótu. Sprawdźmy czas, zanim klawisz skrótu zostanie usunięty ze sklepu Redis. Polecenie TTL może być używane w następujący sposób:
Sesja TTL: Identyfikator: 1000: Użytkownik: 10
Jak pokazano na wyjściu, pozostały trzy sekundy przed automatycznym usunięciem skrótu. Po 10 sekundach wyjście polecenia TTL jest następujące:
Jak wskazana jest odpowiedź całkowita -2, skrót nie istnieje.
Ustaw limit czasu na podstawie istnienia czasu wygaśnięcia
Polecenie wygasające przyjmuje argumenty NX i XX, aby ustawić nowy limit czasu na podstawie istnienia ważności dla określonego skrótu. Stwórzmy nowy skrót z notimeout klucz.
Nazwa hmset notimeout „Test”
Spróbujmy ustawić nową ważność poprzedniego skrótu. Dodatkowo przekazujemy również argument XX na polecenie wygasające.
wygasły Notimeout 15 xx
Ponieważ określamy Xx opcja w poleceniu, czas ważności nie zostanie ustawiony. Opcja XX nie pozwala na ustawienie nowego czasu ważności, jeśli nie ma czasu powiązanego z określonym klawiszem skrótu.
Jeśli używamy Nx opcja, wartość limitu czasu jest ustawiona na 15.
wygasły Notimeout 15 NX
Polecenie wygasa zwraca odpowiedź liczbową 1, co oznacza, że limit czasu jest ustawiona prawidłowo.
Ustaw limit czasu na podstawie istniejącej wartości limitu czasu
Opcje GT i LT można użyć do ustawiania czasu ważności skrótu w oparciu o istniejącą długość limitu czasu.
Utwórzmy nowy skrót o nazwie HashwithTimeout.
HMSET HashwithTimeout Field1 Wartość 1
Następnie ustanowiliśmy czas wygaśnięcia 200 sekund dla skrótu.
wygasnąć 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ż opcja GT została określona, polecenie wygasa sprawdzi, czy nowa wartość limitu czasu jest większa niż istniejąca i ustanowi nowy czas ważności. W tym przykładzie nowy limit czasu nie jest większy niż istniejący limit czasu. Stąd polecenie nie ustawi nowego czasu ważności, a 0 zostanie zwrócony.
Użyjmy opcji LT zamiast GT. Ponieważ nowy czas ważności jest niższy niż bieżący, następujące polecenie powinno z powodzeniem ustawić nowy limit czasu.
wygasnąć HashwithTimeout 100 lt
Wniosek
Krótko mówiąc, polecenie Redis Exire służy do ustawienia wartości TTL dla danego klucza. Domyślnie klawisze skrótu Redis nie są powiązane z żadnym limitem czasu nazywanym nieulotnym. Jak omówiono, polecenie wygasa służy do ustawiania wartości limitu czasu na skrócie Redis. Zwykle skrót jest usuwany ze sklepu Redis Data po ilości czasu określonej jako wartość limitu czasu. Jak pokazano w przykładach, polecenie wygasające przyjmuje niektóre opcjonalne argumenty, takie jak XX, NX, GT i LT, aby ustawić wygaśnięcie skrótu w oparciu o warunek.