问题描述
例如可以说我有一个聊天应用程序,有一个线程表和一个消息表。线程具有消息数。例如:
Thread
id: int
numMessages: int
Messages
threadId: int
content: text
每当我插入一条消息时,我就可以递增numMessages
,或者我可以计算每次的消息数,以防numMessages
不同步。但是,假设有大量消息,我不想每次有新消息时都更新thread
表。最终保持一致是可以的。例如。我可以每分钟更新一次numMessages
。原因之一是我可能在MySQL / Postgres中有threads
表,而在Cassandra / Hbase中有messages
表,这对于较高的IO更好。
然后,由于我不想每分钟都更新每个线程,所以我需要知道哪些线程需要更新。假设我有多个服务器连接到数据库集群,我想到了一些方法:
-
使用消息队列并在每次创建消息时发送一条消息。我需要延迟+重复数据删除,这在默认情况下我认为RabbitMQ / Redis无法做到。
-
在Redis中存储一组需要更新的线程ID。
编辑:3.在message表中查询需要更新的线程。
还有更好的方法吗?我知道这是过早的优化,但是我想学习如何正确进行优化。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)