首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Redis监视器消息

解析Redis监视器消息
EN

Stack Overflow用户
提问于 2019-02-07 22:50:18
回答 1查看 450关注 0票数 0

我试图在Redis服务器和MQTT之间建立一个桥梁,以便在更新Redis数据库时,通过MQTT将这些更新发送给客户端。

为此,客户端(只有一个桥)连接到Redis数据库并开始监视它。

我的问题是解析命令,更确切地说是其中包含的参数,这是一个空格分隔的刺列表。

例如,当我将以下哈希存储在Redis中时

代码语言:javascript
复制
data = {
  "key-3-1-json": "value-1",
  "key-3-2-json": 'this "this is \'quoted\' text"',
}
print r18.hmset("test-hash", {
  "key-1": "value-1",
  "key-2": 'this "this is \'quoted\' text"',
  "key-3": json.dumps(data),
})

客户端收到以下信息

1549578825.1 0 HMSET test-hash "key-3" "{\"key-3-1-json\": \"value-1\", \"key-3-2-json\": \"this \\\"this is 'quoted' text\\\"\"}" "key-2" "this \"this is 'quoted' text\"" "key-1" "value-1"

正如您所看到的,我已经在解析时间戳、数据库id、命令和键,但最后一部分,我不知道如何从它创建字符串列表。

然后,该消息将通过MQTT发送为

mqtt.publish("redis/mon/0/HMSET/test-hash", json.dumps(args))

args会在哪里

代码语言:javascript
复制
[
  "key-3",
  "{\"key-3-1-json\": \"value-1\", \"key-3-2-json\": \"this \\\"this is 'quoted' text\\\"\"}",
  "key-2",
  "this \"this is 'quoted' text\"",
  "key-1",
  "value-1"
]

这可能是最复杂的情况,因为通常,在使用r18.set而不是r18.hmset的情况下,args将是一个单独的字符串。

我认为Python中一定有一些内置的模块,可以这样做,就像解析命令行字符串一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-08 09:38:54

subprocess模块的文档声明subprocess.Popen()使用了shlex.split() (shlex:简单的词汇分析)

调用shlex.split(args_str)有效地将参数字符串转换为所需的子字符串列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54583529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档