快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

springboot整合ehcache+redis实现双缓存

请联系QQ:1793040 索取软件

在一些对并发业务要求较高的场景下,对页面数据的响应是个急需解决的问题,对后端来说,ehcache+redis实现双缓存是解决这一问题的不错思路,而且在不少的电商项目中得到了很好的验证,但我在网上搜寻资料的时候总觉得一些材料不能很好的说明这个问题,要么太复杂,要么太简单,最近抽空思考了一下这一思路的简单实现,下面就用springboot整合ehcache和redis来说明一下实现的过程,

需求说明,这里有个商品,加入页面需要查询这个商品的基本信息,正常情况下,我们会执行一次sql查询即可查询出商品信息,但并发量大的情况下,大量的查询导致数据库连接开销非常大,所以首先走redis缓存,redis没有查到,则走本地的ehcache堆缓存,如果ehcache也没有找到,则走mysql,然后把查询到的数据放入到redis和ehcache中,下面就来整合一下这个思路,

1、整个项目的结构如图所示,这里为了交互方便,我使用的框架是mybatis,
在这里插入图片描述
2、pom依赖文件,


2、application.properties配置,


3、ehchche配置,关于ehcache的使用,大家可自行查找一下相关资料补习一下,用起来很简单,只要xml的配置文件没问题就可以,更深入的其实都在ehcache的配置文件中,作为本地的堆缓存,在应对数据量不是特别大的场景,使用ehcache是个不错的选择,一般是配合redis和其他的缓存工具以一起使用,这里直接贴上,提供参考,


4、接下来是ehcache的配置类和redis的配置类,springboot在启动的时候会自动将这两个配置类纳入全局的bean容器管理中,



5、接下来就是具体的业务代码部分,比较简单,就一笔带过了直接贴上相关代码,



5.2 这里主要来看看ehcache的一个service类,使用ehcache作为缓存,其实基本上有两个注解就够了,一个是加入缓存的注解,@@CachePut ,一个是取出缓存数据的@Cacheable注解,当然还有一个删除缓存的@@CacheEvict 即使缓存失效的,用法很简单,只需要在方法上面添加即可,


5.3 xml中写了个查询的方法,


5.4 最后来看看测试的controller,



数据库里面我提前建一个测试用的表,初始化了两条数据,
在这里插入图片描述

然后来启动一下我们的项目,验证一下整个流程,springboot的启动类,


启动后,我们来到浏览器上输入一下,这里要注意将本地的redis启动,否则会报错的,
http://localhost:8082/getSingleProductInfoid=11212

第一次查询,可以看到直接走了数据库,因为这时我们还没有在redis和ehcache中放过任何数据,但第一次查询出来后,数据会同步存到redis和ehcache中,

在这里插入图片描述
在这里插入图片描述

第二次请求,可以看到这时候走了redis,而且页面的响应速度快了很多,
在这里插入图片描述

这时候我们在redis的客户端执行一下,flushall的命令,清除一下redis中的数据,再请求一次试试,
在这里插入图片描述

可以看到,这一次走的是ehcache缓存,响应速度同样很快,至少比直接查询数据库要快很多

以上便是全部内容,希望对各位看到的同学有用,谢谢观看!
顺便附上源码下载地址,有需要的小伙伴可自行下载:
https://download.csdn.net/download/zhangcongyi420/11058883

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040