Nie ma prostego sposobu na usunięcie starszych wpisów na podstawie TTL/wiek. Możesz użyć kombinacji XTRIM/XDEL
z innymi poleceniami, aby przyciąć strumień.
Zobaczmy, jak możemy użyć XTRIM
Strumień XTRIM MAXLEN ~ SIZE
XTRIM przycina strumień do określonej liczby elementów, w razie potrzeby usuwając starsze elementy (elementy o niższych identyfikatorach).
Generujesz rozmiar strumienia codziennie lub okresowo na podstawie swoich zasad usuwania i przechowujesz go gdzieś za pomocą XLEN
polecenie
Uruchom okresowe zadanie, które wywołałoby XTRIM jako
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
Na przykład wczorajszy rozmiar strumienia wynosił 500, teraz jest 600, potem musimy usunąć 500 wpisów, abyśmy mogli po prostu uruchomić
XTRIM x-stream MAXLEN ~ 100
Możesz użyć różnych zasad usuwania, na przykład codziennie, co tydzień, dwa razy w tygodniu itp.
Identyfikator strumienia XDEL [ID...]
Usuwa określone wpisy ze strumienia i zwraca liczbę usuniętych wpisów, która może różnić się od liczby identyfikatorów przekazanych do polecenia w przypadku, gdy niektóre identyfikatory nie istnieją.
Możesz więc zrobić, gdy usługa B zużywa zdarzenie, a sama usługa może usunąć wpis strumienia, ponieważ usługa B zna identyfikator strumienia, ale to nie zadziała, gdy tylko zaczniesz korzystać z grupy konsumentów. Powiedziałbym więc, że użyj zestawu Redis lub mapy Redis, aby śledzić identyfikatory strumienia potwierdzenia i uruchamiać okresowe zadanie czyszczenia, aby wyczyścić strumień.
Na przykład
Usługa A wysyła element strumienia z ID1 do usługi BUsługa B potwierdza element strumienia po zużyciu elementów w mapack_stream ={ ID1:true }, możesz śledzić inne dane np. liczyć w przypadku grupy konsumentów.
Zadanie zamiatania będzie uruchamiane okresowo o godzinie 1 w nocy dziennie, które odczytuje wszystkie elementy ack_stream i odfiltrowuje wszystkie elementy, które wymagają usunięcia. Teraz możesz zadzwonić do XDEL
polecenia w partiach z zestawem identyfikatorów strumienia.