Как очистить записи из Redis Stream, оставив только N новейших? - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть приложение SpringBoot, где микросервисы отправляют и получают данные из потока redis. Таким образом, каждая запись отправки сервиса, которая является Map:

StringRedisTemplate redisTemplate = new StringRedisTemplate();
Map<String, String> recordMap = new HashMap<>();
recordMap.put("topic", "topicName");
recordMap.put("user", "John");
recordMap.put("somethingElse", "someData");
redisTemplate.opsForStream().add(
            StreamRecords.newRecord()
                .in("name_of_stream")
                .ofMap(recordMap)))

Другие сервисы имеют

public class RedisMessagesListener implements StreamListener<String, MapRecord<String, String, String>>

, которая запускается для каждого сообщения в Redis, ищет значение "topi c" в записать и сделать некоторые сотрудники.

Проблема в том, что записи, отправленные в Redis Stream, всегда сохраняются Redis.

Я собираюсь создать метод @Scheduled в Java?
Мне нужно удалить старые записи определенных тем, осталось только N новых записей (например, 1 000 000)?.
Как я могу это сделать?

1 Ответ

1 голос
/ 10 апреля 2020

Команда Redis XTRIM предназначена именно для такого рода заданий по расписанию. [ Как Xtrim (обрезать поток redis) безопасным способом В потоке уже обсуждались некоторые решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...