[发明专利]用于执行定时任务的方法、存储介质及服务器在审
申请号: | 202110468404.3 | 申请日: | 2021-04-28 |
公开(公告)号: | CN113282580A | 公开(公告)日: | 2021-08-20 |
发明(设计)人: | 尹茂胜 | 申请(专利权)人: | 青岛海尔科技有限公司;海尔智家股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2455;G06F16/27;G06F16/215 |
代理公司: | 北京康盛知识产权代理有限公司 11331 | 代理人: | 李欣芮 |
地址: | 266101 山东省*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 执行 定时 任务 方法 存储 介质 服务器 | ||
本申请涉及计算机软件技术领域,公开一种用于执行定时任务的方法,包括:服务器执行定时任务时访问redis缓存数据库,判断当前是否存在定时任务对应的redis分布式数据锁的键值,如果是,则停止执行定时任务;否则,在redis缓存数据库中写入键值,并继续执行定时任务;获取redis缓存数据库发送的数据锁的解除标识值;当完成定时任务后,发送携带解除标识值的数据锁的删除请求,以删除redis缓存数据库中的数据锁的键值。通过数据锁的形式,保证定时任务只在redis缓存数据库中进行一次数据操作,不会多个服务器均在redis缓存数据库中进行重复数据操作,避免定时任务在redis缓存数据库中的重复执行。
技术领域
本申请涉及计算机软件技术领域,例如涉及一种用于执行定时任务的方法、存储介质和服务器。
背景技术
现在随着浏览器和服务器架构模式(Browser/Server,B/S)的应用广泛,越来越多的人使用起了互联网。在现实需求中有很多业务场景需要设置为固定时间点执行,即在服务器中设置定时任务。随着用户量的不断累积,一个节点的服务器远远满足不了这么多用户量的访问。所以开发人员纷纷对服务器进行水平扩展,部署多个节点的服务器。多个节点的服务器可能都会访问redis缓存数据库请求执行某一定时任务,但是定时任务仅需在redis缓存数据库中执行一次即可,如果多个节点的服务器均在数据库中执行同一定时任务,而每次请求redis缓存数据库都允许服务器进行数据的相应操作的话,会造成定时任务对redis缓存数据库中的数据的重复执行。然而,由于多个节点之间业务逻辑都是独立的,这就造成定时任务很容易在redis缓存数据库中重复被执行的现象。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于执行定时任务的方法、存储介质和服务器,以解决定时任务重复执行的技术问题。
本公开实施例提供一种用于执行定时任务的方法,包括:
服务器执行定时任务时访问redis缓存数据库,判断当前是否存在所述定时任务对应的redis分布式数据锁的键值,如果是,则停止执行所述定时任务;否则,在所述redis缓存数据库中写入所述键值,并继续执行所述定时任务;
获取所述redis缓存数据库发送的所述数据锁的解除标识值;
当完成所述定时任务后,发送携带所述解除标识值的所述数据锁的删除请求,以删除所述redis缓存数据库中的所述数据锁的键值。
在一些实施方式中,所述数据锁的键值包括所述任务的标识,所述redis缓存数据库对应所述数据锁的键值保存所述数据锁的解除标识值。
在一些实施方式中,所述解除标识值中包括所述键值的生成时间的时间戳及第一设定时长的和。
在一些实施方式中,所述在第一设定时长为:
第一时长与第二时长中的较大值;
所述第一时长为所述redis缓存数据库获取到所有服务器为执行所述定时任务发送的redis缓存数据库访问指令所需的时长;
所述第二时长为所述定时任务从访问所述redis缓存数据库到执行完成所需的时长。
在一些实施方式中,所述第一设定时长小于所述定时任务再次执行时间与所述键值的生成时间的差。
本公开实施例提供一种用于创建数据锁的方法,所述方法包括:
redis缓存数据库接收服务器执行定时任务时发送的访问请求;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青岛海尔科技有限公司;海尔智家股份有限公司,未经青岛海尔科技有限公司;海尔智家股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110468404.3/2.html,转载请声明来源钻瓜专利网。