Java 如何从Redis流中清除记录,只留下N条最新记录?

Java 如何从Redis流中清除记录,只留下N条最新记录?,java,spring,spring-boot,redis,Java,Spring,Spring Boot,Redis,我有一个SpringBoot应用程序,其中微服务从redis stream发送和接收一些数据。因此,每个服务发送记录都是映射: StringRedisTemplate redisTemplate = new StringRedisTemplate(); Map<String, String> recordMap = new HashMap<>(); recordMap.put("topic", "topicName"); recordMap.put("user", "Jo

我有一个SpringBoot应用程序,其中微服务从redis stream发送和接收一些数据。因此,每个服务发送记录都是映射:

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)))
StringRedisTemplate redisTemplate=新的StringRedisTemplate();
Map recordMap=newhashmap();
recordMap.put(“主题”、“主题名”);
recordMap.put(“用户”、“约翰”);
放置(“somethingElse”、“sometdata”);
redisTemplate.opsForStream().add(
StreamRecords.newRecord()
.in(“流的名称”)
.ofMap(记录映射)))
其他服务也有

public class RedisMessagesListener implements StreamListener<String, MapRecord<String, String, String>>
公共类RedisMessagesListener实现StreamListener
它会在Redis中的每条消息上触发,在记录中查找“topic”值并执行一些操作

问题是记录一旦发送到Redis Stream,总是由Redis存储

我要在Java中创建@Scheduled方法?

我需要删除某些主题的旧记录,只留下N条最新记录(例如,1000000)<我该怎么做

Redis XTRIM命令正是用于这种调度作业的。[thread已经讨论了一些解决方案