将聊天消息和ID存储在列表中

时间:2015-02-16 12:45:24

标签: redis

我想在ram中使用redis来存储聊天消息。我想要一个像这样的数据结构:

UserA { MessageId->Message}

这应该是一个列表。例如:

User:Okan
15847->Message 1
35848->Message 2
12358->Message 3
84887->Message 4
...

我希望按邮件ID删除邮件。如何将它们存储起来并按邮件ID删除?

1 个答案:

答案 0 :(得分:1)

如果您要更改结构以同时保留用户和消息,您就可以轻松实现。这是哈希的一个例子:

Message:<MessageID>
   ID MessageID
   UserID UserID
   Message MessageText

ID字段是冗余的,因为它已经在HASH密钥名称中,但是当它也是内部元素时有时更容易使用。 你还应该添加一些辅助SETS,取决于你的用例

User:<userID> {messageID1, messageID2, etc...}
Users {ID1, ID2, etc...}

您可以使用交叉点联合并使用SORT一次性从多个哈希中获取Message元素。

顺便说一句,你应该切换到userID而不是name,并将ID的地图保存到Name。

只能通过消息ID删除,但应更新几个键。您应该编写一个更新所有相关密钥的LUA脚本。 (SCRIPT LOAD加载脚本一次,EVALSHA每次都使用它 - 不要在每次拨打电话时使用EVAL。)