Redis
 sql >> база данни >  >> NoSQL >> Redis

Как да дефинирам TTL за redis потоци?

Няма пряк начин за изтриване на по-стари записи въз основа на 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 команди в пакет с набора идентификатори на потоци.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Планиране на задачи за целина с голямо ETA

  2. Осигуряване на възел Redis

  3. Джедаи, не мога да получа връзка с джедаи:не може да получи ресурс от пула

  4. Фатална грешка:Неуловено изключение „RedisException“ със съобщение „Redis сървърът изчезна“

  5. Обработка на преходни мрежови грешки със StackExchange.Redis