Redis: możliwe wygaśnięcie elementu w tablicy lub posortowanym zestawie?

124

Czy obecnie możliwe jest wygaśnięcie tylko całej pary klucz / wartość? Co zrobić, jeśli chcę dodać wartości do struktury typu List i mieć je automatycznie usuwane 1 godzinę po wstawieniu. Czy jest to obecnie możliwe, czy też wymagałoby uruchomienia zadania cron, aby wykonać czyszczenie ręcznie?

randombity
źródło

Odpowiedzi:

76

Czy obecnie możliwe jest wygaśnięcie tylko całej pary klucz / wartość?

O ile mi wiadomo, a także zgodnie z kluczowymi poleceniami i dokumentem o wygaśnięciu , obecnie można ustawić wygaśnięcie tylko dla określonego klucza, a nie do jego podstawowej struktury danych. Jednak w grupach dyskusyjnych Google toczy się dyskusja na temat tej funkcji z przedstawionymi alternatywnymi rozwiązaniami.

yojimbo87
źródło
1
Masz jakiś pomysł na ten lipiec 2016, który wspierali w nowszej wersji?
Kamran Shahid
1
@KamranShahid ma coś na ten temat ??
Prakash Kumar
1
Nop Prakash jeszcze nie.
Kamran Shahid,
3
Czy ta odpowiedź jest nadal aktualna po 8 latach?
simo
2
Tak, wygasanie elementów zagnieżdżonych struktur danych nie jest obsługiwane przez Redis.
Itamar Haber,
94

Istnieje wspólny wzorzec, który całkiem dobrze rozwiązuje ten problem.

Użyj posortowanych zestawów i użyj sygnatury czasowej jako wyniku. W takim przypadku trywialne jest usuwanie elementów według zakresu punktacji, co można by wykonywać okresowo lub tylko przy każdym zapisie, z odczytami zawsze ignorującymi elementy spoza zakresu, czytając tylko zakres wyników.

Więcej tutaj: https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs

Adriaan Pelzer
źródło
7
Niezłe rozwiązanie, ale chciałbym, żeby redis to odpowiednio wspierał. Jest to powszechny wymóg i nie powinien wymagać skomplikowanych obejść.
UpTheCreek
14
Nie wiem, bardzo się cieszę, że trzymają się swoich broni - rozszerzenie zestawu funkcji w sposób, którego nie chcą lub nie planują, oznacza poświęcenie projektu. Budowanie dodatkowej funkcjonalności na szczycie brzmi jak idealne rozwiązanie i pozostawia Redisowi robienie tego, co robi, doskonale
Kieren Johnstone
redis jest doskonały, jak jest - prosty, przejrzysty projekt i przewidywalne zachowanie, które skutkuje czymś więcej niż doskonałą
wydajnością
1
Cudowne rozwiązanie, mogliśmy również skorzystać z prostej listy fifo, w której trzymaliśmy listę i po prostu wzięliśmy pierwsze 5 elementów, a gdy lista urosła do ponad 5 + N w zależności od skalowalności, usuwamy klucz i zaczynamy od nowa. Proste, łatwe i dokładnie takie, jakie powinny być algorytmy Redis. Algorytm ten daje naszemu systemowi raportowania dużo czasu na sprawdzenie listy i sprawdzenie, na jakich urządzeniach logują się użytkownicy. Zgadzam się z @KierenJohnstone, Redis jest zaprojektowany do tworzenia architektury wokół niego i jest doskonały.
Ligemer
1

Natknąłem się na inną metodę radzenia sobie z tym, nie wiem, czy to pomoże komukolwiek z was, ale oto:

Hash i posortowany zestaw są połączone przewodnikiem.

  1. Mam hash, który wygaśnie za „x” sekund
  2. Mam posortowany zestaw, który jest używany do zapytań z zakresu
  3. Dane dla obu są dodawane w transakcji, więc jeśli jedna się nie powiedzie, obie kończą się niepowodzeniem.
  4. W przypadku zapytania zasięgowego użyj opcji „ISTNIEJE”, aby sprawdzić, czy zaszyfrowana wartość istnieje podczas iteracji wyników
  5. Jeśli nie istnieje, wygasł, więc usuń element z posortowanego zestawu
JEPrice
źródło