我的在线游戏中有一个全球聊天室,其中有一些聊天主持人可以禁止用户在发送不适当的消息时不发送消息。
现在我想将所有用户的最后4分钟消息存储在内存中,并在主持人禁止该用户时将它们记录到mysql中。
我正在将redis用于内存数据库,什么是存储消息的最佳方法?
我想到的一种方法是将邮件作为此示例存储在redis中:
[REDIS KEY] : [VALUE]
user_(userid)_chat_message_(timestamp) : message_content --------- EXPIRE : 4 minutes
ex:
user_12345_chat_message_1600947508 : hello guys
当主持人禁止用户时,请使用redis SCAN
命令(模式:user_12345_chat_message_ *)获取所有这些消息并进行记录。
但是我想知道这是最好的方法吗?我的redis数据库很大,我认为SCAN
命令可能不是一个好的选择。