需求描述:

外围平台调用接口根据手机号查询用户的歌单推荐信息,每个用户会有一千条左右的推荐信息,每条推荐信息包括了,歌曲ID、歌曲名称、版权ID、试听地址字段。

我需要关联多张表查询,每次查询时间大概4s左右,查询出来后还需要组装数据,然后才返回接口。

返回格式是json。这样的话接口返回会比较慢。

想过提前将数据放redis集群,但是后来否定了,因为用户量大概是500多万,每个用户的推荐信息大小大概200kb,存redis的话会耗费大量的内存,所以否定了。但是想不到其它给好的处理方法,请各位大神帮忙看看这样一个需求有什么好的处理建议吗?感谢!

回答

感谢各位大神的积极帮助,问题还是出自sql上,这个问题但是考虑的时候只考虑到以用户为中心最终产出数据的方便性,忽略了数据中的共享性,用户偏好的歌曲数据本身就存在大量的冗余,也就是可能大家都喜欢某一首歌曲,如果以用户为中心存储数据的话,可能每个用户的数据里都包含了某一首歌曲。但是我先将歌曲信息单独提取出来存储,那么这个数据将精简到几十万,然后再利用用户偏好的歌曲id去关联到歌曲信息。通过将原来的mobile——>songInfo 改为

mobile——>songId,songId——>songInfo,这样一个关系进行解耦能达到去除冗余,提高效率的效果。

瓶颈出在查询很多张表需要4秒上,这里面的逻辑有可以优化的点吗?如果没有那么这4秒必须花费,其他的数据传输格式,网络通信时间再优化也无法小于4秒了。

要么在客户端在某个用户无感知的情况下发推荐请求,要么优化查询逻辑。

你链表查询,把你的sql贴出来,另外为什么不分开查询呢?估计你耗时在SQ

1.一次返回一千条?一次50条会不会快点呢?多次分页请求呢?

2.觉得直接把缓存方案否了不妥,500多w的用户,并不都是活跃用户,估算出活跃用户的量的redis可以接受不?

3

在【推荐信息】上添加ID属性,保存在redis,这个量应该不会大。

每个用户推荐的信息也存在redis上,但是只保存1000个【推荐信息】的ID。

这样的话就不会造成每个用户的推荐信息有200kb了。

java接口传输数据太多怎么优化,【java】怎样优化接口返回大体量数据?相关推荐

  1. java高性能反射框架_终于有人把性能优化讲清楚了!阿里架构师推荐的Java性能权威指南可太强了...

    Java给大部分人的感觉就是慢,有严重的性能问题.其实程序慢的问题,与语言无关,与Java无关.Java应用的性能优化也是一个老生常谈的话题,但是只要我们深入的了解性能调优方法,走遍天下都不怕! 大多 ...

  2. JAVA调用SAP接口地址_Java以webservice方式调用SAP接口传输数据

    Java以webservice方式调用SAP接口传输数据,在SAP中生成 会计凭证/冲销会计凭证 1.生成会计凭证(已完成) 2.冲销会计凭证(以下教程截图以该接口为例) Java调用sap的webs ...

  3. java 消息队列 秒杀_【IDEA+SpringBoot+Java商城秒杀实战21】高并发秒杀系统接口优化 RabbitMQ异步下单...

    问题: 针对秒杀的业务场景,在大并发下,仅仅依靠页面缓存.对象缓存或者页面静态化等还是远远不够.数据库压力还是很大,所以需要异步下单,如果业务执行时间比较长,那么异步是最好的解决办法,但会带来一些额外 ...

  4. 【Java基础系列教程】第八章 Java面向对象详解(三)_抽象类、接口、内部类、深拷贝与浅拷贝

    一.JavaBean规范 1.1 什么是JavaBean JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中.特点是可序列化,提供无参构造器,提供getter方法和 ...

  5. Java反射的底层原理,以及Java反射的性能分析及优化

    java的反射技术,号称是编程界的九阳神功,也可以说是框架的灵魂.也正是这种反射机制使静态语言的java具备了动态语言的某些特质.就是有了反射,才让java动态,编程的时候更加灵活,能够动态获取信息以 ...

  6. 知乎问题:北京,2017,多少k的java web程序员应该懂多线程和jvm优化?

    知乎问题:https://www.zhihu.com/question/59725713/answer/168294369 谢邀,看你问的诚恳,我也好好回答一番. 先说一下我心目的互联网程序员分级: ...

  7. 提升效率:优化Java代码的35个小技巧

    每天早晨,干货准时奉上! 本文作者:萌小Q 来源: www.cnblogs.com/Qian123/p/6046096.html 前言 代码优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方 ...

  8. Java命令 - 关于jvm性能优化与gc优化相关参数设置

    java 工具的介绍 java - 启动java程序 简介 Windows: javaw命令与java相同,除了javaw没有相关的控制台窗口.当您不希望出现命令提示符窗口时,请使用javaw.然而, ...

  9. 优化Java动画编程中的显示效果

    优化Java动画编程中的显示效果 作者:赵福军 曹代勇 李青云 发文时间:2002.11.12 09:32:33 Java动画编程有多种实现方法,但它们实现的基本原理是一样的,即在屏幕上画出一系列的帧 ...

最新文章

  1. github 修改项目为public_GitHub仓库中项目的语言属性可以这样修改,有点简单
  2. 半导体量子芯片开发获重要进展
  3. Excel导出多sheet单sheet通用型(poi)
  4. iTerm2多个窗口同时输入命令
  5. ITK:将不断变化的密集2D水平集可视化为高程图
  6. GPU Gems1 - 2 水刻蚀的渲染
  7. C# 委托链、多路广播委托
  8. 小米大杀器稳了?队友泄露小米MIX4 5G预售页面...
  9. Linux 查看CPU信息
  10. python实现表格_python 实现绘制整齐的表格
  11. 关于 printf(%*.*s/n,m,n,ch) 的问题
  12. 公式编辑器如何打出空格
  13. linux设置自动关机命令,Linux怎么用命令设置自动关机
  14. js中Error对象
  15. 后代选择器和子选择器
  16. 【1235. 规划兼职工作】
  17. 【原】在vc中实现获取汉字拼音的首字母 - lixiaosan的专栏 - CSDNBlog
  18. 如何在el-table中如何使用计算属性computed
  19. 【C语言练习4】根据公式计算π的值,π=4-4/3+4/5-4/7+4/9+... 打印出一个表格来显示,用公式中的1项、2项、3项...计算出来π的近似值
  20. web浏览器阻止ActiveX控件

热门文章

  1. Spring-spring
  2. PCB钻孔工艺故障及解决办法
  3. 服务器如何在网上设置共享文件,服务器Linux系统设置共享文件夹方法!
  4. java计算机毕业设计云端小区物业智能管理系统MyBatis+系统+LW文档+源码+调试部署
  5. python打开文件
  6. ELK性能优化实战总结:我强任我强,你“跪”标准好好学
  7. SpringBoot-起步依赖与自动装配原理
  8. 北京常用电话!超全!!!
  9. 微信小程序 实现集卡 合成动画
  10. python遍历字典