Няма пряк начин за изтриване на по-стари записи въз основа на TTL/възраст. Можете да използвате комбинация от XTRIM/XDEL
с други команди за отрязване на потока.
Нека видим как можем да използваме XTRIM
XTRIM поток MAXLEN ~ РАЗМЕР
XTRIM подрязва потока до определен брой елементи, изваждайки по-стари елементи (елементи с по-ниски идентификатори), ако е необходимо.
Вие генерирате размера на потока всеки ден или периодично въз основа на вашата политика за изтриване и го съхранявате някъде с помощта на XLEN
команда
Изпълнете периодично задание, което ще извика XTRIM като
XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)
Например, вчера размерът на потока беше 500, сега е 600, след което трябва да изтрием 500 записа, за да можем просто да стартираме
XTRIM x-stream MAXLEN ~ 100
Можете да използвате различни правила за изтриване, например ежедневно, седмично, два пъти седмично и т.н.
Идентификатор на потока XDEL [ID...]
Премахва посочените записи от поток и връща броя на изтритите записи, който може да е различен от броя на идентификаторите, предадени на командата, в случай че определени идентификатори не съществуват.
Така че това, което можете да направите, е всеки път, когато услуга B консумира събитието, самата услуга може да изтрие записа на потока, тъй като услуга B знае идентификатора на потока, но това няма да работи веднага щом започнете да използвате потребителската група. Така че бих казал да използвате Redis set или Redis map, за да проследявате идентификаторите на потвърждение на потоци и да изпълнявате периодична задача за почистване, за да почистите потока.
Например
Услуга А изпраща елемент от поток с ID1 към услугата BService B потвърждава елемента от потока след консумиране на елементите в map_stream ={ ID1:true }, можете да проследявате други данни, напр. брой в случай на потребителска група.
Задача за почистване ще се изпълнява периодично в 1 сутринта на ден, която чете всички елементи на ack_stream и филтрира всички елементи, които изискват изтриване. Сега можете да извикате XDEL
команди в пакет с набора идентификатори на потоци.