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

Redis TimeSeries OHLCV数据压缩失效:WebSocket股票Tick转1分钟K线排查

Redis TimeSeries 1分钟K线自动生成问题排查

Redis TimeSeries 的 createrule 规则是自动触发的,无需手动执行。当原始时序(NIFTY、NIFTYV)写入新数据时,Redis会自动将数据归入对应1分钟时间桶,按你指定的聚合逻辑(first/max/min/last/sum)计算并写入目标时序(O/H/L/C/V)。

你的压缩未生效,大概率是以下几个原因导致:

  • 时间戳单位不匹配
    你设置的桶大小是bucket_size_msec=60000(毫秒级1分钟),需确认WebSocket返回的timestamp是否为毫秒级。如果是秒级时间戳(10位数字),会导致时间桶计算错位,规则无法正确聚合数据。可以将timestamp转换为毫秒后再写入,或者把桶大小改为bucket_size_sec=60(秒级)。

  • 目标时序命名冲突
    你创建的O、H、L、C、V是全局名称,如果Redis中已有其他时序使用这些名称,会导致聚合数据被覆盖或无法正确写入。建议给目标时序加上前缀,修改后的规则创建代码如下:

    ts.create('NIFTY_O', labels={'name':inst, 'type':'O'})
    ts.create('NIFTY_H', labels={'name':inst, 'type':'H'})
    ts.create('NIFTY_L', labels={'name':inst, 'type':'L'})
    ts.create('NIFTY_C', labels={'name':inst, 'type':'C'})
    ts.create('NIFTY_V', labels={'name':inst, 'type':'V'})
    
    ts.createrule(inst, 'NIFTY_O', 'first', bucket_size_msec=60000)
    ts.createrule(inst, 'NIFTY_H', 'max', bucket_size_msec=60000)
    ts.createrule(inst, 'NIFTY_L', 'min', bucket_size_msec=60000)
    ts.createrule(inst, 'NIFTY_C', 'last', bucket_size_msec=60000)
    ts.createrule(inst + 'V', 'NIFTY_V', 'sum', bucket_size_msec=60000)
    
  • 规则未正确创建
    可以执行以下命令检查规则是否存在且配置正确:

    # 查看NIFTY的规则
    print(ts.listrules(inst))
    # 查看NIFTYV的规则
    print(ts.listrules(inst + 'V'))
    

    如果返回空列表,说明规则创建失败,可能是Redis版本不支持或模块加载问题。

  • 查询方式错误
    确认查询目标时序时使用了正确的时间范围。比如查询NIFTY_O时,要覆盖有Tick数据的时间区间,示例查询代码:

    # 查询最近1小时的开盘价数据
    print(ts.range('NIFTY_O', '-3600000', '+'))
    

内容的提问来源于stack exchange,提问作者Benny Thadikaran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:15:38