我們先來跑一趟,模式設計模式在高併發下效果
開啓了5個線程併發,首次執行,除了第一次走db,其餘都走cache,且cache未擊穿,耗時9毫秒
模版設計思路
我們從單線程業務實現,考慮到真正的業務其實就是
userMapper.findUserById(1)
因此首先我們剝離非業務代碼
如何剝離呢,從上面看出,需要設計一個通用的查詢緩存接口,然後每個開發業務方法要採用緩存就調用這個查詢緩存的模版方法findCache,自己實現具體的查詢業務
具體代碼實現在
git地址:https://github.com/luozhonghua/springboot-demo
模版設計優點
與緩存介質解耦,方便存儲介質變更
缺點
侵入業務代碼,開發需依賴自研框架
前年作者這邊在內部已實現基於spring cache重寫的實現,優勢是解耦和零入侵
這是最初的草案:https://blog.csdn.net/luozhonghua2014/article/details/53791725