总诀式

  • 减少网络连接次数

  • 减小网络传输数据

  • 添加缓存

  • 分布式

Redis 式

  • 在同一线程的操作里,尽可能合并redis的操作(pipeline)(减少网络连接次数)

  • 对象尽可能用 hash 保存,然后按需获取 hashKey 的值(减小网络传输数据)

  • 用合适的数据类型,保存相应的数据

Java 式

  • 添加redis缓存(不过,要防止缓存穿透的问题)

  • for循环里使用redis判断时,可以在Java里再次添加二级缓存(Java Memory),而不是每次直接再连接redis(减少网络连接次数)

  • 连接要设置 (connectionTimeout,或其他相关的timeout的问题)

  • 一下子加载的数据太多,可以先加载第一页的数据,其他页的数据,可以开启一个线程,去完成。(先满足用户第一页的数据请求先,后面的数据,再异步去处理)

  • 线程池 + 异步处理

DB 式

  • 优化SQL

  • 只选择需要的列(减小网络传输数据)

  • 大量数据,可以分批处理