在redis中存储node.js的消息聊天。怎么样?

时间:2013-09-04 19:34:58

标签: node.js redis chat

我在node.js + javascript前端实现了一个网站的聊天。 我决定使用Redis来进行对话,所以当用户刷新页面时,他可以获得所有对话。应基于服务器会话存储对话。

我想知道有没有办法在redis中将列表作为值存储? 例如,像:

client.rpush("conversations:"+conversation_id, message);

我想用密钥[sender_id]#[receiver_id]以散列格式存储会话。这样,当有人登录时,我会通过运行所有对话来获得该用户参与的所有对话。通过这种方式,我需要一些时间来进行所有对话并获得仅供用户使用的对话。这将如何影响绩效?

或者第二种方式,也许更好的方法是以格式为用户存储消息:

rpush(user_id, {sender: sen, receiver: rec, content: con, timestamo: tmstp})

通过这种方式,我可以轻松地为用户重新构建所有会话,并在用户登录时显示它们。 这种方法的优点是我需要更少的时间来获得所有用户对话(我直接从列表中获取),但这需要更多空间,因为相同的消息在发送者和接收者的消息列表中保存了两次。

你的意思是什么,更好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我对此有所了解。将所有消息(具有可用格式)发布到redis中的通道,并使用您的首选语言创建一些订阅者,并将这些消息作为批量插入存储到DB。