我们先来跑一趟,模式设计模式在高并发下效果
开启了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