我想在ram中使用redis来存储聊天消息。我想要一个像这样的数据结构:
UserA { MessageId->Message}
这应该是一个列表。例如:
User:Okan
15847->Message 1
35848->Message 2
12358->Message 3
84887->Message 4
...
我希望按邮件ID删除邮件。如何将它们存储起来并按邮件ID删除?
答案 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。)