推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > IT实战联盟 > 精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新

IT实战联盟 2018-10-27


一、背景介绍

前面几篇文章,我们主要介绍了二级缓存架构的演进过程,并实战演练了二级缓存架构实例,本篇文章我们将分享什么呢?缓存预热缓存更新

特别提醒:最近发的文章是个系列文章,如果没有看之前发布的一些文章,操作上可能会遇到困难,讲过的东西,不会再重复讲,否则一篇文章会过于长了,当然你有任何问题,都可以在下方留言,我会尽可能的解答你的疑问

先看如下架构图:


我们要实现的功能就是使用分布式定时任务框架Elastic Job定时拉取db数据并刷新到redis中,实现缓存预热缓存更新的功能

那什么是缓存预热缓存更新呢?

缓存预热:缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!

我们的解决思路就是采用的定时刷新缓存,我们使用Elastic Job不仅可以定时出发,而且还可以在任意时刻在管控台进行手动出发,是不是相当方便,如果想知道具体怎么用,请继续往下读……

缓存更新:我们一般进行redis缓存的时候,都会设置缓存的过期时间,这样可以实现无效key的自动删除,不用手动自己来清除无效key;既然缓存会过期,那我们肯定要采用某种策略来实现缓存的全量更新,我们的解决思路就是通过定时任务实现缓存的定时全量更新

二、核心系统介绍

技术框架:springboot、redis、Elastic Job

代码仓库:这个代码完全可以运行成功,本地演示过

https://gitee.com/jikeh/JiKeHCN-RELEASE.git

项目名

spring-boot-ad——广告管理系统

spring-boot-redis-elastic-job——定时任务系统

1、Elastic Job是什么

其实之前发布的几篇文章已经详细介绍了Elastic Job的具体使用,并实战演练了具体操作,有文章教程,也有视频教程,如果你想进一步了解Elastic Job的具体使用,可以移步到如下地方,然后再回来继续往下看:

分布式定时任务框架Elastic-Job实战

重点关注Elastic Job管控台的安装与使用:分布式定时任务框架Elastic-Job控制台安装&使用

2、广告管理系统(spring-boot-ad)中增加一个全量查询广告数据的接口

之前我们已经介绍了该系统的搭建:缓存架构之SpringBoot搭建广告管理系统雏形 为redis提供源数据

1)增加一个控制器方法

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


2)mapper中增加一个方法,.xml文件中也增加相应的方法

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


3、定时任务系统(spring-boot-redis-elastic-job)

1)添加Elastic Job依赖

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


2)Elastic Job配置

(1)注册中心配置:zookeeper

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


(2)job任务配置

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


properties配置:

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


3)Elastic Job任务

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


三、实战操作演练

1、启动zookeeper

关于zookeeper的使用,如果你不清楚,可以参考之前发布的文章:Windows下安装zookeeper

这里仅讲下使用:Windows下双击该命令即可启动

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


2、启动Elastic Job管控台

关于管控台的使用,如果你不清楚,可以参考之前发布的文章:分布式定时任务框架Elastic-Job控制台安装&使用

这里仅讲下使用:Windows下双击该命令即可启动

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


启动后,访问:http://localhost:8899/,即可进入管控台

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


3、启动广告管理系统

项目名:spring-boot-ad

直接运行run,即可启动我们的项目

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


4、启动定时任务系统

项目名:spring-boot-redis-elastic-job

我们这里设置的是每5分钟执行一次,你可以根据实际场景进行合理的设置

1)将我们的定时任务配置到管控台以便我们在管控台上可以直接手动触发任务

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


2)直接运行run,即可启动定时任务系统

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


管控台上的显示:

精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新


5、启动redis客户端

如果你没有合适的redis客户端,可以参看我之前发布的文章介绍:redis客户端 可视化界面

先清空redis数据,5分钟之后,观察redis中是否已经有数据了==>定时任务正常执行;

再次清空redis数据,进入Elastic Job管控台,手动触发任务,再观察redis中是否已经有数据了==>手动出发功能正常;

在我们的广告管理系统上新建一个广告,5分钟之后,观察redis中是否已经有该广告数据了==>定时任务正常执行;

四、下节预告

借助消息中间件实现edis缓存的实时更新r,也就是完成如下架构:

---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《精品推荐:缓存架构之实战演练Elastic Job定时实现redis缓存预热、缓存更新》的版权归原作者「IT实战联盟」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读