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