Потоки Redis - удалить / истечь события в зависимости от времени
Я играю с redis stream и пока все хорошо. Я пытаюсь понять, есть ли у меня способ истечь старые события в зависимости от времени или каким-либо другим способом. Я знаю, что мы можем удалить по идентификатору события. Но я не хочу запоминать / хранить идентификатор события, что сложно. Вместо этого я ищу способ удалить последние 10K событий или что-то в этом роде.
2 ответа
Пока нет возможности истечь события по времени. Вместо этого единственная стратегия истечения срока действия - истечение срока действия событий путем сохранения последних N событий. Вы можете использовать команду XTRIM для удаления старых событий.
Должен ли я сделать это как раз? Можно ли настроить поток для сохранения последних N событий?
Если вы хотите всегда хранить последние N событий, вы можете вызвать команду XADD сMAXLEN
возможность получить ограниченный поток. Также с~
вариант, вы можете получить лучшую производительность, но неточно истекать события. Проверьте документ на детали.
Это возможно в Redis 6.2.
Если вы используете идентификаторы событий по умолчанию (передавая
*
в качестве идентификатора для
XADD
) они будут начинаться с метки времени UNIX, когда событие было вставлено, за которым следует тире.
Тогда вы можете использовать
XTRIM $stream_name MINID $timestamp
для удаления всех событий с идентификатором ниже $ timestamp, что эквивалентно всем событиям старше отметки времени.