我在 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})
通过这种方式,我可以轻松地为用户重建所有对话并在用户登录时显示它们。这种方法的优点是我需要更少的时间来获取所有用户对话(我直接从列表中获取),但这需要更多空间,因为相同的消息被保存两次,分别在发送者和接收者的消息列表中。
你的意思是什么是更好的方法?