Neexistuje žádný přímý způsob, jak odstranit starší záznamy na základě TTL/věku. Můžete použít kombinaci XTRIM/XDEL
pomocí dalších příkazů pro oříznutí streamu.
Podívejme se, jak můžeme použít XTRIM
Stream XTRIM MAXLEN ~ SIZE
XTRIM ořízne stream na daný počet položek a v případě potřeby odstraní starší položky (položky s nižším ID).
Velikost streamu generujete každý den nebo pravidelně na základě zásad mazání a někde ji ukládáte pomocí XLEN
příkaz
Spusťte periodickou úlohu, která by volala XTRIM jako
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
Například včerejší velikost streamu byla 500, nyní je 600, pak musíme smazat 500 záznamů, abychom mohli spustit
XTRIM x-stream MAXLEN ~ 100
Pro mazání můžete použít různé zásady, například denně, týdně, dvakrát týdně atd.
ID streamu XDEL [ID...]
Odebere zadané položky ze streamu a vrátí počet smazaných položek, který se může lišit od počtu ID předávaných příkazu v případě, že určitá ID neexistují.
Takže co můžete udělat je, že kdykoli služba B spotřebuje událost, může samotná služba smazat záznam streamu, protože služba B zná ID streamu, ale to nebude fungovat, jakmile začnete používat skupinu spotřebitelů. Řekl bych tedy, že ke sledování ID potvrzovacích streamů použijte sadu Redis nebo mapu Redis a spusťte periodickou úlohu čištění pro vyčištění streamu.
Například
Služba A odešle položku toku s ID1 službě B Služba B potvrdí položku toku po spotřebování položek v mapack_stream ={ ID1:true }, můžete sledovat další data, např. počet v případě skupiny spotřebitelů.
Úloha rozmítání by se spouštěla pravidelně, například v 1:00 denně, čte všechny prvky ack_stream a filtruje všechny položky, které vyžadují smazání. Nyní můžete volat XDEL
příkazy v dávce se sadou ID proudů.