【Google Guava 緩存】 下篇

接着上篇嘮!Google Guava 配合 List分頁工具類進行接口優化改造。

接上篇,你可以在項目初始化或者通過定時任務把從MySQL查詢出來的幾乎不會改變的大量的數據放到Cache中,
然後配合工具類進行模擬MySQL的分頁查詢,速度比MySQL快很多

不廢話貼代碼


/**
 * @author bo bo
 * @date 2019/12/16 9:23
 * @desc list集合工具類
 */
public class ListPagerUtils {
    /**
	 * @param pageIndex 當前頁碼
     * @param pageSize  當前頁面大小
     * @param list      需要分頁的集合
     * @return
     */
    public static List Pager( int pageIndex, int pageSize, List list) {
        //使用list 中的sublist方法分頁
        List<T> dataList = null;
        // 每頁顯示多少條記錄

        int currentPage; //當前第幾頁數據

        int totalRecord = list.size(); // 一共多少條記錄

        int totalPage = totalRecord % pageSize; // 一共多少頁
        if (totalPage > 0) {
            totalPage = totalRecord / pageSize + 1;
        } else {
            totalPage = totalRecord / pageSize;
        }

        System.out.println("總頁數:" + totalPage);

        // 當前第幾頁數據
        currentPage = totalPage < pageIndex ? totalPage : pageIndex;

        // 起始索引
        int fromIndex = pageSize * (currentPage - 1);

        // 結束索引
        int toIndex = pageSize * currentPage > totalRecord ? totalRecord : pageSize * currentPage;
        try {
            dataList = list.subList(fromIndex, toIndex);
        } catch (IndexOutOfBoundsException e) {
            e.printStackTrace();
        }
        return dataList;
    }
}

實際優化的業務部分代碼

	//今天的訂單
        if (type.equals("1")) {
            Object cacheOrder = GuavaCacheUtil.get("todayWecharOrder");
            if (cacheOrder != null) {
                List<WecharOrderVo> orderList = (List<WecharOrderVo>) cacheOrder;
                for (WecharOrderVo order : orderList) {
                    if (order.getTenantId().equals(map.get("tenantId"))) {
                        neworderList.add(order);
                    }
                }
                List pagerList = ListPagerUtils.Pager(format.getIndex(), format.getLimit(), neworderList);
                respMap.put("orderList", pagerList);
                respMap.put("count", neworderList.size());
            }
        }

最後來個結果圖,效果還不錯,幾乎速度都是在50ms左右

優化前:線上版本

image.png

優化後:沒分頁

image.png

優化後:有分頁

image.png

當然這可能不是最優優化。也希望你能給我你的建議,一起交流學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章