如何使用 Python 解析 Redis 流数据?
How to parse Redis Streams Data with Python?
我需要一些帮助来让 python 中的 Redis 流接收到消息。例如,如果我通过流发送以下数据:
{
"identifier": "abcxyz"
"query": "testQuery"
}
我从流中收到以下内容:
[['streamA', [('1611593593691-0', {'identifier': 'zxkbdnarrz', 'query': 'testQuery'})]]]
这是我连接到 Redis Stream 的方式:
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 中的 Redis 流接收到消息。例如,如果我通过流发送以下数据:
{
"identifier": "abcxyz"
"query": "testQuery"
}
我从流中收到以下内容:
[['streamA', [('1611593593691-0', {'identifier': 'zxkbdnarrz', 'query': 'testQuery'})]]]
这是我连接到 Redis Stream 的方式:
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'}