【问题标题】:How to parse Redis Streams Data with Python?如何使用 Python 解析 Redis Streams 数据?
【发布时间】:2021-04-29 12:20:33
【问题描述】:

我需要一些帮助来获取 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 模块将其作为字典进行访问。

我该怎么做? 蒂亚!

【问题讨论】:

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


    【解决方案1】:

    您好,您可以这样做:

    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'}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      相关资源
      最近更新 更多