MySQL 配置了Master-Slave后, 高并发下同步数据会需要一定时间,这个时间可能是1s, 2s, 所以添加的数据不能马上在slave 上查询的到. 在此背景下要把用户发的评论实时的列出来,改怎么实现?
我的思路:
评论添加到数据库之后,让文章ID为做key, 评论数据作为value 已经数据的形式序列化后保存在缓存中。缓存里面的是一个队列,队列大小可配置。
在列出评论之前,获取缓存里面评论数据,取出评论ID, 然后查询slave 数据库 加上条件 评论ID not in (?)
因为是分页查询,把查询结果merge后 减去多余的评论返回给客户端
这个是基本思路。
大家有更好的建议吗?
你的方法我感觉有以下问题:
SELECT LAST_INSERT_ID()
查询的是从库,此时可能还没同步过来not in
无法走索引,会有性能问题个人感觉有些简单的问题复杂化了。如果对评论的实时性要求比较高,我的建议是: