echarts是百度推出的一款開源的基於`JavaScript`的可視化圖表庫,該開發庫目前發展非常不錯,且支持各類圖形的繪製可定製程度高,Echarts繪圖庫同樣可以與`Flask`結合,前臺使用`echart`繪圖庫進行圖形的生成與展示,後臺則是Flask通過`render_template`方... ...
- 數據結構方面:Redis的sorted set結構用來排名很方便,誰得分高誰排名往上。
- 排行榜是時限性業務。具有周期性。超出時間,自動刪除。Redis的超時設置很好實現。
- 排行榜是熱點數據。讀多寫少,Redis能減輕資料庫壓力。
- 資料庫使用limit查詢排名靠後的數據性能差,效率低。
select * from table limit 10000, 100
源碼:
@ResponseBody
@GetMapping("/post/hots")
public Result hotPost() {
// 從redis獲取排行榜
Set<ZSetOperations.TypedTuple> lastWeekRank = redisUtil.getZSetRank("last_week_rank", 0, 6);
List<Map<String, Object>> hotPosts = new ArrayList<>();
for (ZSetOperations.TypedTuple typedTuple : lastWeekRank) {
Map<String, Object> map = new HashMap<>();
map.put("comment_count", typedTuple.getScore());
map.put("id", redisUtil.hget("rank_post_" + typedTuple.getValue(), "post:id"));
map.put("title", redisUtil.hget("rank_post_" + typedTuple.getValue(), "post:title"));
hotPosts.add(map);
}
return Result.succ(hotPosts);
}
註意: 一定要答全,不然很淚目。