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

Python Redis的xread是否不支持"$"?流更新时无记录返回

Python Redis中xread的"$"参数使用问题

Python Redis完全支持"$"参数,你遇到的流更新后无返回的情况,大概率是对参数含义的误解或使用场景的问题,以下是具体分析和排查方向:

  • 明确"$"参数的含义:"$"代表从调用xread时流的最新消息之后开始读取,也就是说,执行该命令前流中已存在的消息不会被返回,只有在命令执行后新写入的消息才会被捕获。如果你的测试是先写入消息再执行xread,自然不会有返回结果。

  • 检查Redis服务器版本:Stream是Redis 5.0及以上版本才引入的特性,若你的Redis服务器版本低于5.0,Stream相关命令本身就无法正常工作,更不用说"$"参数。可以通过redis-cli info server查看版本号。

  • 验证消息写入的正确性:确保你测试时的消息确实写入了目标流中。可以在执行xread的同时,用redis-cli执行XADD stream_name * key value手动写入消息,观察代码是否能捕获到。

  • 排查连接与上下文问题:确认代码连接的Redis实例与你测试写入的实例是同一个,避免因连接配置错误导致读取到空流。

正确的测试流程示例:

import redis

# 建立Redis连接
r = redis.Redis(host="localhost", port=6379, db=0)
# 阻塞等待新消息(block=0表示一直阻塞直到有消息)
result = r.xread(streams={"stream_name": "$"}, block=0)
print("收到新消息:", result)

保持上述代码运行,在另一个终端执行redis-cli并输入XADD stream_name * username "test_user",此时代码应该会立即输出收到的消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:02:37