java - 我可以从 Redis 的最新数据中得到我想要的数据吗?
问题描述
我想知道 Redis 数据的偏移量,例如 kafka 消费者中的偏移量。下面的代码是使用Kafka Consumer和offset导入最新n个数据的代码。
public ConsumerRecords<String, String> getLatestMessages() {
ConsumerRecords<String, String> messages = null;
consumer.seekToEnd(topics);
long endPosition = consumer.position(topicPartition);
long startPosition = endPosition - 10;
consumer.seek(topicPartition, startPosition);
messages = consumer.poll(Duration.ofMillis(100));
return messages;
}
我可以像这段代码一样从 Redis 获取 n 个数据吗?
在 sorted set 中看到了类似的方法,但这不是我想要的功能。我想将海量日志实时存储到Redis,我想每100ms将它们带到最新的10~50条数据。
有什么办法可以从 Redis 获取它?现在我使用生菜库。
解决方案
借助 redis 中的 pub 和 sub 功能,您可以将数据存储在一个地方,并在特定时间间隔撤回这些数据。
您可以使用 stackexcahnge.redis 将数据订阅到 mongodb 并使用 api 将其提交给您的客户
可能还有其他解决方案,但我正在使用它并会推荐
推荐阅读
- powershell - 你如何用巧克力安装流星?
- macos - 如何在 macOS Kext 中使用 DMA?
- environment-variables - 无法从 ts 文件中的 env 文件中读取
- typescript - 需要帮助来“异步”一个 Function("...").call() for firestore
- react-native - 无法确定 androidx.coordinatorlayout 的工件:coordinatorlayout:1.1.0:由于早期错误而跳过
- javascript - 如何[(ngModel)]绑定默认值[已选]
- mysql - 能够在 Group BY 之后订购
- django - 如何为 django graphql 自动生成模式
- bash - 为什么 cd 命令在我的 shell 脚本中不起作用?
- google-cloud-bigtable - Python SDK 与 CBT 中的 Bigtable 时区差异