Потоки Redis - удалить / истечь события в зависимости от времени

Я играю с redis stream и пока все хорошо. Я пытаюсь понять, есть ли у меня способ истечь старые события в зависимости от времени или каким-либо другим способом. Я знаю, что мы можем удалить по идентификатору события. Но я не хочу запоминать / хранить идентификатор события, что сложно. Вместо этого я ищу способ удалить последние 10K событий или что-то в этом роде.

2 ответа

Решение

Пока нет возможности истечь события по времени. Вместо этого единственная стратегия истечения срока действия - истечение срока действия событий путем сохранения последних N событий. Вы можете использовать команду XTRIM для удаления старых событий.

Должен ли я сделать это как раз? Можно ли настроить поток для сохранения последних N событий?

Если вы хотите всегда хранить последние N событий, вы можете вызвать команду XADD сMAXLENвозможность получить ограниченный поток. Также с~вариант, вы можете получить лучшую производительность, но неточно истекать события. Проверьте документ на детали.

Это возможно в Redis 6.2.

Если вы используете идентификаторы событий по умолчанию (передавая * в качестве идентификатора для XADD) они будут начинаться с метки времени UNIX, когда событие было вставлено, за которым следует тире.

Тогда вы можете использовать XTRIM $stream_name MINID $timestamp для удаления всех событий с идентификатором ниже $ timestamp, что эквивалентно всем событиям старше отметки времени.

Другие вопросы по тегам