我们的app有个聊天的功能,开始设计的是按照轮询的方式来拉消息,拉消息的时候每次从db里查询sql,性能特别差。我想在拉消息的时候,在db上面加一层,但是我没有想好这块用缓存,还是消息队列,还是其他的。缓存的话,没有想好结构怎么设计存储结构,才能在拉消息的时候比较方便的从内存中拉取到所需要的信息

解决方案 »

  1.   

    看看java的nio  或者直接看netty。
      

  2.   

    轮询 为啥  性能特别差 
    你要查的只是增量 未被查看过的消息  
    而且还有app在聊天窗口的时候  轮询
    没打开聊天窗口的时候 做有新消息 的标示就可以了1、减少轮询请求次数
    2、减少io传输数据量
    3、数据库垂直拆分  聊天记录只保存10天的记录  其他记录移动到历史聊天记录表中
    4、加机器或者加服务,分布式系统(这个你回考虑么?)
    5、你需要查多次的 重复性数据 才需要缓存吧