Redis GETEX

Redis Getex



Redis to magazyn danych klucz-wartość używany jako pamięć podręczna w pamięci, baza danych, szeregi czasowe, silnik strumieniowy, broker komunikatów itp. Ponieważ magazyn danych Redis używa prostego formatu pary klucz-wartość do przechowywania danych, jest to bardzo pamięć wydajny. Ponadto szybkość zapytań jest bardzo wysoka przy niskich złożonościach czasowych, takich jak O(1) i O(log(N)). Klucze Redis mogą zawierać różne struktury danych, takie jak ciągi, zestawy, skróty, posortowane zestawy i listy.

Zwykle polecenia GET i SET służą do przechowywania i pobierania wartości typu ciągów przechowywanych w danym kluczu Redis. Te dwa polecenia działają ze stałą złożonością czasową.







Dodatkowo dostępna jest komenda GETEX do odczytywania wartości łańcuchów przechowywanych pod danym kluczem. Ale to polecenie jest również powiązane z operacją zapisu równoległego. W tym przewodniku skupimy się na składni polecenia GETEX, jego opcjach i przypadkach użycia.



TTL klucza Redis

Wartość time to live (TTL) to czas wygaśnięcia danej porcji danych. Zwykle TTL można powiązać z wierszami bazy danych. Limit czasu można również ustawić za pomocą klawiszy Redis. Tak więc klient Redis może sprawdzić pozostałe sekundy, w których dany klucz będzie dostępny w magazynie danych. Redis oferuje polecenie TTL, aby sprawdzić czas życia wartości danego klucza. Jeśli z określonym kluczem nie jest skojarzony żaden limit czasu, polecenie TTL zwraca -1. W kolejnych sekcjach użyjemy polecenia TTL, aby sprawdzić pozostały czas danego klawisza.



Dowództwo GETEX

Jak podkreślono, polecenie GETEX jest bardziej podobne do polecenia GET, z wyjątkiem tego, że można go użyć do ustawienia czasu wygaśnięcia określonego klucza. Ponadto opcja polecenia może usunąć wartość limitu czasu z danego klucza. Składnia polecenia GETEX jest następująca:





Klawisz GETEX [ EX timeout_in_seconds | Limit czasu PX_w_milisekundach | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-time-milisekundy | TRWAĆ ]

klucz: To jest klucz, który wskazuje na wartość ciągu.

Następujące opcjonalne argumenty mogą służyć do ustawiania limitu czasu w sekundach lub milisekundach.



BYŁY: To ustawi czas wygaśnięcia w sekundach dla danego klucza.

PX: Wartość limitu czasu klucza zostanie ustawiona w milisekundach.

Ponadto możemy określić wartość znacznika czasu UNIX w sekundach lub milisekundach za pomocą następujących opcji polecenia EXAT oraz PXAT :

EXAT: Czas wygaśnięcia zostanie ustawiony w formacie sygnatury czasowej UNIX, a sygnatura czasowa będzie w sekundach.

PXAT: Limit czasu dla danego klucza Redis zostanie ustawiony jako znacznik czasu UNIX w milisekundach.

TRWAĆ: Określając to, możesz usunąć czas życia wartości skojarzonej z określonym kluczem.

Polecenie GETEX zwraca wartość podanego klucza. To polecenie działa tylko z wartościami typu łańcuchowego, ale nie z hashami, listami, posortowanymi zestawami itp. Jeśli określisz klucz skojarzony z wartością inną niż łańcuch, polecenie zwróci błąd. Ponadto, jeśli klucz już wygasł lub nie istnieje, polecenie zwróci zero.

W następnym rozdziale omówimy praktyczne zastosowanie polecenia GETEX.

Przypadek użycia — tymczasowe łącze resetowania lub generowanie kodu PIN do odzyskiwania hasła/otp

Firma hostingowa udostępnia funkcję odzyskiwania hasła dla zarejestrowanych użytkowników. Ze względów bezpieczeństwa wysyłają do użytkownika nowy link URL, który wygaśnie w ciągu 5 minut. Firma od dawna korzysta ze składnicy danych Redis i używa polecenia GETEX do ustawienia czasu życia dla danego użytkownika.

Załóżmy, że użytkownik o identyfikatorze user_id 1000 żąda odzyskania hasła. Tak więc adres URL odzyskiwania może być przechowywany pod kluczem RecoveryURL:UserID:1000 . Możemy użyć polecenia SET do przechowywania adresu URL odzyskiwania w następujący sposób:

ustawić RecoveryURL:ID użytkownika: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Sprawdźmy, czy ciąg URL jest prawidłowo przechowywany w kluczu RecoveryURL:UserID:1000. Możemy użyć polecenia GETEX w następujący sposób:

getex RecoveryURL: ID użytkownika: 1000

Dane wyjściowe poprzedniego polecenia są pokazane w następujący sposób:

Jeśli użyliśmy polecenia GET zamiast polecenia GETEX, dane wyjściowe będą takie same.

Użyjmy polecenia TTL, aby sprawdzić, czy czas wygaśnięcia jest powiązany z tym kluczem.

URL odzyskiwania TTL: ID użytkownika: 1000

Zgodnie z oczekiwaniami, komenda TTL zwróciła -1, co oznacza, że ​​z określonym kluczem nie jest skojarzony czas wygaśnięcia.

Zgodnie z tym przykładem firma hostingowa musi ustawić limit czasu 5 minut dla adresu URL odzyskiwania. Więc będziemy używać BYŁY opcja polecenia. Ponieważ 5 minut to 300 sekund, możemy skonstruować polecenie GETEX w następujący sposób:

getex RecoveryURL: ID użytkownika: 1000 BYŁY 500

Uruchommy kilka razy polecenie TTL, aby sprawdzić pozostały czas, w którym klucz będzie istniał w magazynie danych.

Zgodnie z oczekiwaniami czas się skraca i ostatecznie RecoveryURL:UserID:1000 klucz zostanie usunięty. Poniżej znajduje się wyjście po 5 minutach:

Polecenie zwróciło -2, co oznacza, że ​​klucz wygasł i został usunięty z magazynu danych.

Czasami może być konieczne usunięcie wartości limitu czasu skojarzonej z danym kluczem. Tak więc opcja polecenia PERSIST może być użyta do usunięcia wartości TTL związanej z określonym kluczem.

Utwórzmy kolejny przykładowy klucz i przypiszmy do niego wartość ciągu. W takim przypadku określimy wartość TTL w milisekundach, przekazując PX opcja.

ustawić KeytoTestPersist 'To wygaśnie w ciągu 60 sekund' PX 50000

Następnie sprawdzimy pozostały czas w następujący sposób:

Zgodnie z oczekiwaniami TTL spada. Wywołajmy polecenie GETEX z opcją TRWAŁE w następujący sposób:

getex KeytoTestPersist trwa

Najlepiej byłoby, gdyby usunęło to TTL skojarzone z tym kluczem. Sprawdźmy TTL dla klucza KeytoTestPersist.

Polecenie TTL zwróciło -1, co oznacza, że ​​żadne TTL nie jest powiązane z kluczem KeytoTestPersist.

Podobnie GETEX Polecenie może być użyte do ustawienia czasu wygaśnięcia kluczy w sygnaturze czasowej UNIX.

Wniosek

Podsumowując, polecenie Redis GETEX może być użyte do pobrania wartości ciągów przechowywanych w danym kluczu, tak jak robi to polecenie GET. Jedyna różnica w stosunku do polecenia GETEX polega na tym, że obsługuje ustawianie i usuwanie czasów wygaśnięcia dla danego klucza. Obsługuje kilka opcjonalnych argumentów, aby określić czas wygaśnięcia w sekundach, milisekundach i sekundach lub milisekundach ze znacznikiem czasu UNIX. Jak wspomniano, polecenie udostępnia opcję PERSIST, aby usunąć skojarzony czas TTL dla danego klucza. Ogólnie rzecz biorąc, polecenie GETEX działa ze stałą złożonością czasową.