python - 如何使用Python解析Redis流数据?

标签 python python-3.x redis redis-py

我需要一些帮助来获取 python 中的 Redis 流接收的消息。例如,如果我通过流发送以下数据:

{
  "identifier": "abcxyz"
  "query": "testQuery"
}

我从流中收到以下内容:

[['streamA', [('1611593593691-0', {'identifier': 'zxkbdnarrz', 'query': 'testQuery'})]]]

以下是我连接到 Redis 流的方法:

r1 = redis.Redis(host=redis_host, port=redis_port,
             password=redis_password, db=1, decode_responses=True)  

fromStreamA = r1.xread({'streamA': "$"}, count=1, block=0)

理想情况下,我希望能够访问 {} 之间的所有内容,以便我可以使用 Python JSON 模块将其作为字典进行访问。

我该怎么做? TIA!

最佳答案

嗨,你可以这样做:

msg = [['streamA', [('1611593593691-0', {'identifier': 'zxkbdnarrz', 'query': 'testQuery'})]]]

[[stream, [[number, d]]]] = msg
print(d)
>>> {'identifier': 'zxkbdnarrz', 'query': 'testQuery'}

或者当您的消息如下所示时:

msg = [[b'streamA', [[b'1627026892700-0', [b'identifier', b'zxkbdnarrz', b'query', b'testQuery']]]]]

您可以使用以下代码获取字典:

msg = [[b'streamA', [[b'1627026892700-0', [b'identifier', b'zxkbdnarrz', b'query', b'testQuery']]]]]

[[stream, [[number, parts]]]] = msg
foo = (p.decode('utf-8') for p in parts)
d = dict(zip(foo, foo))
print(d)
>>> {'identifier': 'zxkbdnarrz', 'query': 'testQuery'}

关于python - 如何使用Python解析Redis流数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65889103/

相关文章:

ruby-on-rails - 从 Ruby 到 Azure 的 Redis::TimeoutError

python - 如何使用 Python 通过 XMPP 传输文件?

python - 有选择地迭代张量

python - 是否可以在 Flask-SQLalchemy 中将 bool 列设置为唯一约束?

python - 如何让 Tornado websocket 客户端接收服务器通知?

python - openpyxl 导致 excel 中现有 DataValidation 丢失

java - 如何在集群模式下运行docker redis?

python - 使 ModelForm 与 Django 中的中间模型的多对多关系工作的步骤是什么?

python - pymongo 显示 skip 必须是 int 的实例 - 错误

javascript - 使用node_redis客户端正确执行Lua脚本