gpt4 book ai didi

java - 如何清除Redis Stream中的记录,只留下N条最新记录?

转载 作者:行者123 更新时间:2023-12-02 08:44:58 25 4
gpt4 key购买 nike

我有 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 中的每条消息上触发,在记录中查找“主题”值并执行一些操作。

问题在于,记录一旦发送到 Redis Stream,就始终由 Redis 存储。

我要在 Java 中创建 @Scheduled 方法?
我需要删除某些主题的旧记录,只留下 N 条最新记录(例如 1 000 000 条)?
我该怎么做?

最佳答案

Redis XTRIM 命令正是用于此类计划作业。 [How to Xtrim (trim redis stream) in the safe way线程已经讨论了一些解决方案

关于java - 如何清除Redis Stream中的记录,只留下N条最新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61141575/

25 4 0