sql >> Databáze >  >> NoSQL >> Redis

Jak definovat TTL pro redis streamy?

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ů.




  1. Vytáhněte záznam z pole přes Meteor

  2. Jak používat GridFS k ukládání obrázků pomocí Node.js a Mongoose

  3. Jak vytvořit uživatele v mongodb pomocí docker-compose

  4. Úvod do datových struktur Redis:Bitmapy