在Redis pubsub中,是否可以将对象传递给PUBLISH命令?

时间:2011-03-04 07:25:43

标签: redis

我有一个将记录插入postgresql表的应用程序,在插入之后,我想向Redis发送一个PUBLISH命令。是否可以将该记录的对象传递给redis的PUBLISH命令,以便另一端的用户也会收到该对象?

4 个答案:

答案 0 :(得分:22)

Redis没有“对象”的含义,所有redis获取的都是字节,特别是字符串!
因此,当您想要发布一个对象时,您必须以某种方式对其进行序列化,并在订阅者上对其进行反序列化。

答案 1 :(得分:3)

是的,但是因为redis存储字符串而不是对象,所以您需要在PUBLISH过程中序列化/反序列化对象。 JSON是一种理想的格式。

答案 2 :(得分:0)

这个问题已经很久以前问过了,但是,如果有人到达这里,可以使用nodejs redis库为我工作。

npm i redis

使用node.js的最简单方法是像这样简单地发布:

const data = {
   name: 'John Doe',
   age: 0
};

publisher.publish('<channel_name>', JSON.stringify(data));

然后,客户订户可以使用以下代码进行阅读:

subscriber.on('message', (channel, message) => {
   const data = JSON.parse(message);
   console.log(data);
   // your code goes here to do whatever you want with the data
});

subscriber.subscribe('<channel_name>');

结果:

{name: 'John Doe', age: 0}

答案 3 :(得分:0)

适用于 Python 开发人员。使用 json.dumps() 序列化 python dict。

出版商

import json 

payload_dict = {
 'key1':'value1',
 'key2':'value2'
}

data = json.dumps(payload_dict)
publisher.publish('channel', data)

订阅者

 data = subscriber.get('data').decode('utf-8')