java - 怎麼優化介面回傳大體量資料?
世界只因有你
世界只因有你 2017-05-17 10:00:33
0
4
940

需求描述:

外圍平台調用接口根據手機號查詢用戶的歌單推薦信息,每個用戶會有一千條左右的推薦信息,每條推薦信息包括了,歌曲ID、歌曲名稱、版權ID、試聽位址欄位

我需要關聯多張表查詢,每次查詢時間大概4s左右,查詢出來後還需要組裝數據,然後才回傳介面。

回傳格式是json。這樣的話介面回傳會比較慢。

想過提前將資料放redis集群,但是後來否定了,因為用戶量大概是500多萬,每個用戶的推薦資訊大小大概200kb,存redis的話會耗費大量的內存,所以否定了。但想不到其它給好的處理方法,請各位大神幫忙看看這樣一個需求有什麼好的處理建議嗎?感謝!

世界只因有你
世界只因有你

全部回覆(4)
我想大声告诉你

瓶頸出在查詢很多張表需要4秒上,這裡面的邏輯有可以最佳化的點嗎?如果沒有那麼這4秒必須花費,其他的資料傳輸格式,網路通訊時間再優化也無法小於4秒了。
要么在客戶端在某個用戶無感知的情況下發送推薦請求,要么優化查詢邏輯。

洪涛

你鍊錶查詢,把你的sql貼出來,另外為什麼不分開查詢呢?估計你耗時在SQ

给我你的怀抱

1.一次返回一千條?一次50條會不會快點呢?多次分頁請求呢?
2.覺得直接把快取方案否了不妥,500多w的用戶,並不都是活躍用戶,估算出活躍用戶的量的redis可以接受不?
3

某草草

在【建議資訊】上加入ID屬性,保存在redis,這個量應該不會大。

每個使用者推薦的資訊也存在redis上,但是只保存1000個【推薦資訊】的ID。

這樣的話就不會造成每個用戶的推薦資訊有200kb了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板