You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用node-redis在Redis TimeSeries中查询argmin?

解决RedisTimeSeries指定时间范围的argmin查询问题

要在TypeScript中使用node-redis的TimeSeries模块获取指定时间范围内的argmin(即最小值对应的时间戳和数值),无需拉取全量数据处理,可直接使用RedisTimeSeries提供的TS.MIN命令(对应node-redis的client.ts.min()方法)。

解决方案代码

替换你代码中的查询部分为以下实现:

// 查询argmin:获取时间范围[3,5]内最小值对应的时间戳和数值
const fromTimestamp = 3;
const toTimestamp = 5;

// 使用ts.min方法指定时间范围,直接获取范围内的最小值及对应时间戳
const argminResult = await client.ts.min('test_time_serie_key', {
  FROM: fromTimestamp,
  TO: toTimestamp
});

const argmin = {
  timestamp: argminResult.timestamp,
  value: argminResult.value
};
console.log(`Argmin in range [${fromTimestamp}, ${toTimestamp}] is: ${JSON.stringify(argmin)}`);

方案说明

  • TS.MIN是RedisTimeSeries专为查询最小/最大值设计的优化命令,会在Redis服务端直接计算指定时间范围内的最小值,并返回该值对应的原始数据点时间戳,完全避免了拉取全量数据的性能损耗,适合你时间范围长、数据量大且高频执行的场景。
  • 对比你之前使用ts.range加聚合的方式:聚合功能是按指定时间桶分组计算,返回的是每个桶的最小值和桶的起始时间,无法定位到原始数据点的时间戳,而TS.MIN直接返回精确的原始数据信息。

注意事项

  • 确保你的Redis服务器已安装RedisTimeSeries模块,且版本支持范围查询(推荐使用RedisTimeSeries 1.4+,或最新稳定版)。
  • 确保使用的node-redis版本为v4及以上,该版本对RedisTimeSeries的命令支持更完善,包含ts.min()的范围参数选项。

内容的提问来源于stack exchange,提问作者Vince M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:02:09