CN113722364A - redis使用控制方法及装置 - Google Patents

redis使用控制方法及装置 Download PDF

Info

Publication number
CN113722364A
CN113722364A CN202110982436.5A CN202110982436A CN113722364A CN 113722364 A CN113722364 A CN 113722364A CN 202110982436 A CN202110982436 A CN 202110982436A CN 113722364 A CN113722364 A CN 113722364A
Authority
CN
China
Prior art keywords
redis
time
current
middleware
reconnection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110982436.5A
Other languages
English (en)
Inventor
辜坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202110982436.5A priority Critical patent/CN113722364A/zh
Publication of CN113722364A publication Critical patent/CN113722364A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明公开了一种redis使用控制方法及装置,涉及数据库技术领域,其中该方法包括:当从redis中间件存取数据失败时,更新记录的redis当前失败次数;如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;当到达redis下次重连时间,从redis中间件中存取数据;如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。本发明可以在异常时自动停止redis中间件的使用,并自动重连,在保证系统正常运行的同时提升系统处理效率。

Description

redis使用控制方法及装置
技术领域
本发明涉及数据库技术领域,尤其涉及一种redis使用控制方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用程序接口(Application Programming Interface,API)。
在银行金融交易系统中,为了提升数据库存取数据的效率,新增redis中间件将常用的信息进行缓存,以降低系统处理时间,提高系统处理效率。但因为redis的稳定性和可靠性较持久化数据库(Data Base,DB)低,加上业务数据的重要性较高,所以在进行redis缓存时需要对其缓存的数据进行备份DB持久化,以防redis异常时数据丢失。
当redis异常时,需系统具备自动检测并停用redis的能力,以保证不影响交易;同时,又需要系统自动重连redis,保证能在redis正常时切换到redis,提升系统处理效率。但是,当前使用redis的相关技术时,暂未考虑redis异常时自动断开的保护系统机制和redis恢复后自动重连机制。
发明内容
本发明实施例提供一种redis使用控制方法,用以在redis异常时自动停止redis中间件的使用,并自动进行redis重连,在保证系统正常运行的同时提升系统处理效率,该方法包括:
当从redis中间件存取数据失败时,更新记录的redis当前失败次数;
判断记录的redis当前失败次数是否大于预设失败次数阈值;
如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;
当到达redis下次重连时间,从redis中间件中存取数据;
如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
在本发明实施例的一种实现方式中,在当从redis中间件存取数据失败时,更新记录的redis当前失败次数之前,所述方法还包括:
当系统启动时,接收用户配置的redis检测参数,所述redis检测参数包括redis开关状态值、预设失败次数阈值和redis自动重连步长;
将redis开关状态值加载到系统内部开关变量;
当所述开关变量的值为开启时,从redis中间件存取数据。
在本发明实施例的一种实现方式中,在将redis开关状态值加载到系统内部开关变量之后,所述方法还包括:
当所述开关变量的值为关闭时,不使用redis中间件。
在本发明实施例的一种实现方式中,所述方法还包括:
当系统启动后,实时接收用户对于redis检测参数的修改操作;
按照修改后的redis检测参数确定redis中间件的使用状态。
在本发明实施例的一种实现方式中,在判断记录的redis当前失败次数是否大于预设失败次数阈值之后,所述方法还包括:
如果redis当前失败次数小于预设失败次数阈值,则再次从redis中间件存取数据。
在本发明实施例的一种实现方式中,根据当前时间及预设的redis自动重连步长确定redis下次重连时间,包括:
根据当前时间+(当前失败次数+1-最大失败次数)×redis自动重连步长计算redis下次重连时间。
在本发明实施例的一种实现方式中,在当到达redis下次重连时间,从redis中间件中存取数据之后,所述方法还包括:
如果存取数据失败,则重新根据当前时间及预设的redis自动重连步长确定redis下次重连时间。
在本发明实施例的一种实现方式中,当从redis中间件存取数据失败时,更新记录的redis当前失败次数之前,所述方法还包括:
读取记录的redis下次重连时间;
如果redis下次重连时间为空,或者小于等于当前时间,则从redis中间件存取数据,其中,当从系统启动开始,redis当前失败总次数小于预设失败次数阈值时,redis下次重连时间为空。
在本发明实施例的一种实现方式中,在读取记录的redis下次重连时间之后,所述方法还包括:
如果redis下次重连时间大于当前时间,则不使用redis中间件。
在本发明实施例的一种实现方式中,所述方法还包括:
如果redis当前失败次数小于等于预设失败次数阈值,且两次失败之间的时间间隔超过指定时间间隔,则将指定时间间隔之前记录的失败次数清零,从0开始记录从指定时间间隔之后redis中间件存取数据失败次数。
本发明实施例还提供一种redis使用控制装置,用以在redis异常时自动停止redis中间件的使用,并自动进行redis重连,在保证系统正常运行的同时提升系统处理效率,该装置包括:
参数记录模块,用于当从redis中间件存取数据失败时,更新记录的redis当前失败次数;
判断模块,用于判断记录的redis当前失败次数是否大于预设失败次数阈值;
确定模块,用于当redis当前失败次数大于等于预设失败次数阈值时,根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;
连接模块,用于当到达redis下次重连时间,从redis中间件中存取数据;
参数记录模块,还用于当存取数据成功时,确定与redis的连接恢复正常,将redis当前失败次数清零。
在本发明实施例的一种实现方式中,所述装置还包括:
接收模块,用于当系统启动时,接收用户配置的redis检测参数,所述redis检测参数包括redis开关状态值、预设失败次数阈值和redis自动重连步长;
参数加载模块,用于将redis开关状态值加载到系统内部开关变量;
连接模块,用于当所述开关变量的值为开启时,从redis中间件存取数据。
在本发明实施例的一种实现方式中,
连接模块,还用于当所述开关变量的值为关闭时,不使用redis中间件。
在本发明实施例的一种实现方式中,
接收模块,还用于当系统启动后,实时接收用户对于redis检测参数的修改操作;
连接模块,用于与参数记录模块、判断模块和确定模块共同按照修改后的redis检测参数确定redis中间件的使用状态。
在本发明实施例的一种实现方式中,
连接模块,用于当redis当前失败次数小于预设失败次数阈值时,再次从redis中间件存取数据。
在本发明实施例的一种实现方式中,确定模块,用于:
根据当前时间+(当前失败次数+1-最大失败次数)×redis自动重连步长计算redis下次重连时间。
在本发明实施例的一种实现方式中,
确定模块,还用于当存取数据失败时,重新根据当前时间及预设的redis自动重连步长确定redis下次重连时间。
在本发明实施例的一种实现方式中,所述装置还包括:
参数读取模块,用于读取记录的redis下次重连时间;
连接模块,用于当redis下次重连时间为空,或者小于等于当前时间时,从redis中间件存取数据,其中,当从系统启动开始,redis当前失败总次数小于预设失败次数阈值时,redis下次重连时间为空。
在本发明实施例的一种实现方式中,
连接模块,用于当redis下次重连时间大于当前时间时,不使用redis中间件。
在本发明实施例的一种实现方式中,所述参数记录模块,还用于:
当redis当前失败次数小于等于预设失败次数阈值,且两次失败之间的时间间隔超过指定时间间隔时,将指定时间间隔之前记录的失败次数清零,从0开始记录从指定时间间隔之后redis中间件存取数据失败次数。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述redis使用控制方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述redis使用控制方法的计算机程序。
本发明实施例中,通过参数配置及严格的流程控制机制,当从redis中间件存取数据失败且达到预设失败次数阈值时,确定redis异常,自动停用redis,并根据当前时间和预设的redis自动重连步长确定redis下次重连时间;在到达redis下次重连时间时自动恢复redis的使用,如果redis中间件存取数据成功,就继续正常使用redis。这样一来,既可以使用redis高效存取数据的机制,又可以规避redis稳定性风险,使系统具备良好的容错性,有效提升系统的稳定性,在保证系统正常运行的同时提升系统处理效率。
此外,通过配置预设失败次数阈值和redis自动重连步长来对redis进行容错控制,如果是发生交易较少的系统,可以将预设失败次数阈值设置较少一些,redis自动重连步长设置的长一些;较为重要、交易量较大的系统可以将预设失败次数阈值设置的小一些,redis自动重连步长设置的短一些,动态控制,增加了系统的健壮性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中一种redis使用控制方法的流程图;
图2为本发明实施例中另一种redis使用控制方法的流程图;
图3为本发明实施例中另一种redis使用控制方法的流程图;
图4为本发明实施例中一种redis使用控制装置的结构示意图;
图5为本发明实施例中一种计算机设备的结构示意图;
图6为本发明实施例中一种计算机设备的系统架构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例中提供了一种redis使用控制方法,如图1所示,该方法包括步骤101至步骤105:
步骤101、当从redis中间件存取数据失败时,更新记录的redis当前失败次数。
系统可以将产生的数据缓存至redis中间件中,当需要时从redis中间件中读取缓存数据。当redis中间件启动后,系统保持与redis中间件的连接,但该连接可能出现异常,向redis中间件中缓存数据或从redis中间件中读取数据失败时,表明此刻处于与redis中间件的连接异常。
在执行步骤101当从redis中间件存取数据失败时,更新记录的redis当前失败次数之前,如图2所示,还可以执行如下步骤201至步骤203:
步骤201、当系统启动时,接收用户配置的redis检测参数,redis检测参数包括redis开关状态值、预设失败次数阈值和redis自动重连步长。
步骤202、将redis开关状态值加载到系统内部开关变量。
步骤203、当开关变量的值为开启时,从redis中间件存取数据。
本发明实施例中,系统可以为银行金融交易系统,或者使用redis中间件实现其他功能的系统。
用户可以配置redis检测参数,具体的,可以将redis开关状态值配置为开启或关闭,设置预设失败次数阈值的数值,以及redis自动重连步长的具体时长。比如说,可以将预设失败次数阈值设置为3次或5次,将redis自动重连步长设置为10分钟或30分钟等。
以程序语言表示,redis开关状态值redis.switch=on或者redis.switch=off;预设失败次数阈值redis.max.fail.times=3;redis自动重连步长redis.auto.reconnect.mins=30。
当系统启动时,自动读取用户配置的redis检测参数,并将redis开关状态值加载到系统内部开关变量redisSwitch中。系统根据redisSwitch的取值为on(开启)或off(关闭)来决定使用redis中间件或不使用redis中间件。
本发明实施例中,考虑到可能由于业务变更、业务量变化等原因,导致当前的redis检测参数不能满足使用需求,则用户可以修改redis检测参数来控制redis的使用。具体的,当系统启动后,实时接收用户对于redis检测参数的修改操作;按照修改后的redis检测参数确定redis中间件的使用状态。
示例性的,如果用户将redis开关状态值由开启修改为关闭,则关闭redis中间件的使用;如果用户将预设失败次数阈值由3次修改为5次,将redis自动重连步长由10分钟修改为30分钟,则相应改变了后续步骤102和步骤103中关于redis当前失败次数与预设失败次数阈值的判断结果,以及计算的redis下次重连时间。
当系统初次启动时,redis下次重连时间设置为空值,即redisNextConnectTime=空,当本发明实施例中方法应用后,redis下次重连时间可能赋了具体时间值,如redisNextConnectTime=13:00,由于当redis当前失败次数达到预设失败次数阈值,则计算redis下次重连时间,在最后一次失败的时间至redis下次重连时间之中不使用redis中间件,为了确定redis中间件是否处于不使用的状态,本发明实施例中,当从redis中间件存取数据失败时,更新记录的redis当前失败次数之前,还读取记录的redis下次重连时间。
如果redis下次重连时间为空,或者小于等于当前时间,则从redis中间件存取数据。其中,当从系统启动开始,redis当前失败总次数小于预设失败次数阈值时,redis下次重连时间为空。
如果redis下次重连时间大于当前时间,则不使用redis中间件。
举例来说,redis下次重连时间为13:00,如果当前时间为12:45,redis下次重连时间大于当前时间,则不使用redis存取数据;如果当前时间为13:05,redis下次重连时间小于当前时间,则已到达redis下次重连时间,继续使用redis中间件。
步骤102、判断记录的redis当前失败次数是否大于预设失败次数阈值。
步骤103、如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间。
其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件。
本发明实施例中,记录每一次从redis存取数据失败的次数,并将记录的redis当前失败次数与预设失败次数阈值进行比较。由于预设失败次数阈值为容忍redis存取失败的最大次数,当redis当前失败次数大于等于预设失败次数阈值时,认为redis中间件处于异常状态,如果不做任何处理,则可能一直向redis中间件存取数据,但又一直失败,导致交易数据难以正常处理。因此,为了不影响交易数据的正常处理,暂时停用redis中间件。
在另一种实现方式中,如图3所示,在执行步骤102判断记录的redis当前失败次数是否大于预设失败次数阈值之后,还可以执行如下步骤301:
步骤301、如果redis当前失败次数小于预设失败次数阈值,则再次从redis中间件存取数据。
当一次向redis存取数据失败时,如果不进行任何处理,因有交易数据待处理,会不断向redis中间件请求存取数据。考虑到可能存在偶然原因导致从redis中间件中存取数据失败,当重新尝试时即可连接成功,因此,如果redis当前失败次数小于预设失败次数阈值时,不采取任何处理,允许再次从redis中间件中存取数据,以确定是否存取失败为偶然发生的。
本发明实施例中,根据如下公式计算确定redis下次重连时间:
redis下次重连时间=当前时间+(当前失败次数+1-最大失败次数)×redis自动重连步长示例性的,当前时间为12:00,redis当前失败次数为3次,预设失败次数阈值为3次,redis自动重连步长为30分钟,则
redis下次重连时间=12:00+(3+1-3)×30min=12:30
也就是说,将12:30确定为redis下次重连时间。
从上述计算redis下次重连时间的公式可以看出,在redis多次重连仍失败时,计算得到的redis下次重连时间与当前时间的时间间隔会延长。沿用上例,当到达12:30时,如果仍从redis中间件存取数据失败,则更新redis当前失败次数为4次,重新计算redis下次重连时间:
redis下次重连时间=12:30+(4+1-3)×30min=13:30
与12:00至12:30相比,12:30至13:00的时间段更长。这也是考虑到了redis已经停用30分钟,仍没有恢复,其可能出现较大问题,再每隔30min重连一次,可能redis仍无法恢复正常使用,重连的过程还会影响交易数据的正常处理,因此,当多次重连仍失败时,两次重连之间的时长会延长,以为redis预留出足够的恢复时间,同时也降低了反复重连对于交易数据处理过程的影响。
步骤104、当到达redis下次重连时间,从redis中间件中存取数据。
步骤105、如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
也就是说,当每一次从redis中间件中存取数据成功时,均认为与redis的连接恢复正常,将redis当前失败次数清零。后续如果再从redis中间件中存取数据失败,则重新累计redis当前失败次数。
在另一种实现方式中,如果存取数据失败,则重新根据当前时间及预设的redis自动重连步长确定redis下次重连时间。示例性的,当到达redis下次重连时间12:30时,仍存取数据失败,则重新根据当前时间12:30与redis自动重连步长30min,计算redis下次重连时间,计算得到13:30,则在12:30至13:30之间停用redis,当到达13:30时,再次尝试从redis中间件中存取数据,如此反复。
本发明实施例中,还考虑到某些系统中处理的交易数据较少,从redis中间件中存取数据的次数也较少,而由于偶然原因导致从redis中间件中存取数据失败也不会直接确定redis中间件异常,因此,如果redis当前失败次数小于等于预设失败次数阈值,且两次失败之间的时间间隔超过指定时间间隔,则将指定时间间隔之前记录的失败次数清零,从0开始记录从指定时间间隔之后redis中间件存取数据失败次数。
也就是说,如果redis当前失败次数为2次,且第一次存取数据失败的时间为12:30,第二次存取数据失败的时间为12:50,指定时间间隔为10min,则将第一次存取数据失败的次数记录清零,将第二次存取失败记录为redisCurrentFailTimes=1。
本发明实施例中,通过参数配置及严格的流程控制机制,当从redis中间件存取数据失败且达到预设失败次数阈值时,确定redis异常,自动停用redis,并根据当前时间和预设的redis自动重连步长确定redis下次重连时间;在到达redis下次重连时间时自动恢复redis的使用,如果redis中间件存取数据成功,就继续正常使用redis。这样一来,既可以使用redis高效存取数据的机制,又可以规避redis稳定性风险,使系统具备良好的容错性,有效提升系统的稳定性,在保证系统正常运行的同时提升系统处理效率。
此外,通过配置预设失败次数阈值和redis自动重连步长来对redis进行容错控制,如果是发生交易较少的系统,可以将预设失败次数阈值设置较少一些,redis自动重连步长设置的长一些;较为重要、交易量较大的系统可以将预设失败次数阈值设置的小一些,redis自动重连步长设置的短一些,动态控制,增加了系统的健壮性。
本发明实施例中还提供了一种redis使用控制装置,如下面的实施例所述。由于该装置解决问题的原理与redis使用控制方法相似,因此该装置的实施可以参见redis使用控制方法的实施,重复之处不再赘述。
如图4所示,装置400包括参数记录模块401、判断模块402、确定模块403和连接模块404。
其中,参数记录模块401,用于当从redis中间件存取数据失败时,更新记录的redis当前失败次数;
判断模块402,用于判断记录的redis当前失败次数是否大于预设失败次数阈值;
确定模块403,用于当redis当前失败次数大于等于预设失败次数阈值时,根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;
连接模块404,用于当到达redis下次重连时间,从redis中间件中存取数据;
参数记录模块401,还用于当存取数据成功时,确定与redis的连接恢复正常,将redis当前失败次数清零。
在本发明实施例的一种实现方式中,所述装置还包括:
接收模块,用于当系统启动时,接收用户配置的redis检测参数,所述redis检测参数包括redis开关状态值、预设失败次数阈值和redis自动重连步长;
参数加载模块,用于将redis开关状态值加载到系统内部开关变量;
连接模块,用于当所述开关变量的值为开启时,从redis中间件存取数据。
在本发明实施例的一种实现方式中,
连接模块,还用于当所述开关变量的值为关闭时,不使用redis中间件。
在本发明实施例的一种实现方式中,
接收模块,还用于当系统启动后,实时接收用户对于redis检测参数的修改操作;
连接模块,用于与参数记录模块、判断模块和确定模块共同按照修改后的redis检测参数确定redis中间件的使用状态。
在本发明实施例的一种实现方式中,
连接模块,用于当redis当前失败次数小于预设失败次数阈值时,再次从redis中间件存取数据。
在本发明实施例的一种实现方式中,确定模块,用于:
根据当前时间+(当前失败次数+1-最大失败次数)×redis自动重连步长计算redis下次重连时间。
在本发明实施例的一种实现方式中,
确定模块,还用于当存取数据失败时,重新根据当前时间及预设的redis自动重连步长确定redis下次重连时间。
在本发明实施例的一种实现方式中,所述装置还包括:
参数读取模块,用于读取记录的redis下次重连时间;
连接模块,用于当redis下次重连时间为空,或者小于等于当前时间时,从redis中间件存取数据,其中,当从系统启动开始,redis当前失败总次数小于预设失败次数阈值时,redis下次重连时间为空。
在本发明实施例的一种实现方式中,
连接模块,用于当redis下次重连时间大于当前时间时,不使用redis中间件。
在本发明实施例的一种实现方式中,所述参数记录模块,还用于:
当redis当前失败次数小于等于预设失败次数阈值,且两次失败之间的时间间隔超过指定时间间隔时,将指定时间间隔之前记录的失败次数清零,从0开始记录从指定时间间隔之后redis中间件存取数据失败次数。
本发明实施例中,通过参数配置及严格的流程控制机制,当从redis中间件存取数据失败且达到预设失败次数阈值时,确定redis异常,自动停用redis,并根据当前时间和预设的redis自动重连步长确定redis下次重连时间;在到达redis下次重连时间时自动恢复redis的使用,如果redis中间件存取数据成功,就继续正常使用redis。这样一来,既可以使用redis高效存取数据的机制,又可以规避redis稳定性风险,使系统具备良好的容错性,有效提升系统的稳定性,在保证系统正常运行的同时提升系统处理效率。
此外,通过配置预设失败次数阈值和redis自动重连步长来对redis进行容错控制,如果是发生交易较少的系统,可以将预设失败次数阈值设置较少一些,redis自动重连步长设置的长一些;较为重要、交易量较大的系统可以将预设失败次数阈值设置的小一些,redis自动重连步长设置的短一些,动态控制,增加了系统的健壮性。
本发明实施例还提供一种计算机设备,图5为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的redis使用控制方法中全部步骤,该计算机设备具体包括如下内容:
处理器(processor)501、存储器(memory)502、通信接口(CommunicationsInterface)503和通信总线504;
其中,所述处理器501、存储器502、通信接口503通过所述通信总线504完成相互间的通信;所述通信接口503用于实现相关设备之间的信息传输;
所述处理器501用于调用所述存储器502中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的redis使用控制方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述redis使用控制方法的计算机程序。
图6为本发明实施例中提供的一种计算机设备的系统组成结构示意图。如图6所示,该计算机设备600可以包括处理器601和存储器602;存储器602耦合到处理器601。值得注意的是,该图6是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一个实施例中,redis使用控制方法实现的功能可以被集成到处理器601中。其中,处理器601可以被配置为进行如下控制:当从redis中间件存取数据失败时,更新记录的redis当前失败次数;判断记录的redis当前失败次数是否大于预设失败次数阈值;如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;当到达redis下次重连时间,从redis中间件中存取数据;如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
由上可知,本发明的实施例中提供的计算机设备,用于执行如下方法:当从redis中间件存取数据失败时,更新记录的redis当前失败次数;判断记录的redis当前失败次数是否大于预设失败次数阈值;如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;当到达redis下次重连时间,从redis中间件中存取数据;如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
通过本发明实施例中提供的计算机设备,能够在redis异常时自动停止redis中间件的使用,并自动进行redis重连,在保证系统正常运行的同时提升系统处理效率。
在另一个实施例中,redis使用控制装置可以与处理器601分开配置,例如可以将redis使用控制装置配置为与处理器601连接的芯片,通过处理器的控制来实现基于redis使用控制方法的功能。
如图6所示,该计算机设备600还可以包括:通信模块603、输入单元604、音频处理单元605、显示器606、电源603。值得注意的是,计算机设备600也并不是必须要包括图6中所示的所有部件;此外,计算机设备600还可以包括图6中没有示出的部件,可以参考现有技术。
如图6所示,处理器601有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器601接收输入并控制计算机设备600的各个部件的操作。
其中,存储器602,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且处理器601可执行该存储器602存储的该程序,以实现信息存储或处理等。
输入单元604向处理器601提供输入。该输入单元604例如为按键或触摸输入装置。电源603用于向计算机设备600提供电力。显示器606用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器602可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器602还可以是某种其它类型的装置。存储器602包括缓冲存储器6021(有时被称为缓冲器)。存储器602可以包括应用/功能存储部6022,该应用/功能存储部6022用于存储应用程序和功能程序或用于通过处理器601执行计算机设备600的操作的流程。
存储器602还可以包括数据存储部6023,该数据存储部6023用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由计算机设备使用的数据。存储器602的驱动程序存储部6024可以包括计算机设备的用于通信功能和/或用于执行计算机设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块603即为经由天线608发送和接收信号的发送机/接收机。通信模块(发送机/接收机)603耦合到处理器601,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一计算机设备中,可以设置有多个通信模块603,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)603还经由音频处理单元605耦合到扬声器609和麦克风610,以经由扬声器609提供音频输出,并接收来自麦克风610的音频输入,从而实现通常的电信功能。音频处理单元605可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理单元605还耦合到处理器601,从而使得可以通过麦克风610能够在本机上录音,且使得可以通过扬声器609来播放本机上存储的声音。
本发明的实施例中还提供了一种用于实现上述实施例中redis使用控制方法中全部步骤的一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的redis使用控制方法的全部步骤,例如,该处理器执行该计算机程序时实现下述步骤:当从redis中间件存取数据失败时,更新记录的redis当前失败次数;判断记录的redis当前失败次数是否大于预设失败次数阈值;如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;当到达redis下次重连时间,从redis中间件中存取数据;如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
由上可知,本发明的实施例中提供的计算机可读存储介质,存储有执行如下方法的计算机程序:当从redis中间件存取数据失败时,更新记录的redis当前失败次数;判断记录的redis当前失败次数是否大于预设失败次数阈值;如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;当到达redis下次重连时间,从redis中间件中存取数据;如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
通过本发明实施例中提供的计算机可读存储介质,能够在redis异常时自动停止redis中间件的使用,并自动进行redis重连,在保证系统正常运行的同时提升系统处理效率。
虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本领域技术人员应明白,本说明书的实施例可提供为方法、装置(系统)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。可单独使用本发明的每个方面和/或实施例,或者与一个或更多其他方面和/或其他实施例结合使用。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例中所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (22)

1.一种redis使用控制方法,其特征在于,所述方法包括:
当从redis中间件存取数据失败时,更新记录的redis当前失败次数;
判断记录的redis当前失败次数是否大于预设失败次数阈值;
如果redis当前失败次数大于等于预设失败次数阈值,则根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;
当到达redis下次重连时间,从redis中间件中存取数据;
如果存取数据成功,则确定与redis的连接恢复正常,将redis当前失败次数清零。
2.根据权利要求1所述的方法,其特征在于,在当从redis中间件存取数据失败时,更新记录的redis当前失败次数之前,所述方法还包括:
当系统启动时,接收用户配置的redis检测参数,所述redis检测参数包括redis开关状态值、预设失败次数阈值和redis自动重连步长;
将redis开关状态值加载到系统内部开关变量;
当所述开关变量的值为开启时,从redis中间件存取数据。
3.根据权利要求2所述的方法,其特征在于,在将redis开关状态值加载到系统内部开关变量之后,所述方法还包括:
当所述开关变量的值为关闭时,不使用redis中间件。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
当系统启动后,实时接收用户对于redis检测参数的修改操作;
按照修改后的redis检测参数确定redis中间件的使用状态。
5.根据权利要求1所述的方法,其特征在于,在判断记录的redis当前失败次数是否大于预设失败次数阈值之后,所述方法还包括:
如果redis当前失败次数小于预设失败次数阈值,则再次从redis中间件存取数据。
6.根据权利要求1所述的方法,其特征在于,根据当前时间及预设的redis自动重连步长确定redis下次重连时间,包括:
根据当前时间+(当前失败次数+1-最大失败次数)×redis自动重连步长计算redis下次重连时间。
7.根据权利要求1或6所述的方法,其特征在于,在当到达redis下次重连时间,从redis中间件中存取数据之后,所述方法还包括:
如果存取数据失败,则重新根据当前时间及预设的redis自动重连步长确定redis下次重连时间。
8.根据权利要求1所述的方法,其特征在于,当从redis中间件存取数据失败时,更新记录的redis当前失败次数之前,所述方法还包括:
读取记录的redis下次重连时间;
如果redis下次重连时间为空,或者小于等于当前时间,则从redis中间件存取数据,其中,当从系统启动开始,redis当前失败总次数小于预设失败次数阈值时,redis下次重连时间为空。
9.根据权利要求8所述的方法,其特征在于,在读取记录的redis下次重连时间之后,所述方法还包括:
如果redis下次重连时间大于当前时间,则不使用redis中间件。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果redis当前失败次数小于等于预设失败次数阈值,且两次失败之间的时间间隔超过指定时间间隔,则将指定时间间隔之前记录的失败次数清零,从0开始记录从指定时间间隔之后redis中间件存取数据失败次数。
11.一种redis使用控制装置,其特征在于,所述装置包括:
参数记录模块,用于当从redis中间件存取数据失败时,更新记录的redis当前失败次数;
判断模块,用于判断记录的redis当前失败次数是否大于预设失败次数阈值;
确定模块,用于当redis当前失败次数大于等于预设失败次数阈值时,根据当前时间及预设的redis自动重连步长确定redis下次重连时间,其中,在当前时间至redis下次重连时间之间的时间中,不使用redis中间件;
连接模块,用于当到达redis下次重连时间,从redis中间件中存取数据;
参数记录模块,还用于当存取数据成功时,确定与redis的连接恢复正常,将redis当前失败次数清零。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
接收模块,用于当系统启动时,接收用户配置的redis检测参数,所述redis检测参数包括redis开关状态值、预设失败次数阈值和redis自动重连步长;
参数加载模块,用于将redis开关状态值加载到系统内部开关变量;
连接模块,用于当所述开关变量的值为开启时,从redis中间件存取数据。
13.根据权利要求12所述的装置,其特征在于,
连接模块,还用于当所述开关变量的值为关闭时,不使用redis中间件。
14.根据权利要求12或13所述的装置,其特征在于,
接收模块,还用于当系统启动后,实时接收用户对于redis检测参数的修改操作;
连接模块,用于与参数记录模块、判断模块和确定模块共同按照修改后的redis检测参数确定redis中间件的使用状态。
15.根据权利要求11所述的装置,其特征在于,
连接模块,用于当redis当前失败次数小于预设失败次数阈值时,再次从redis中间件存取数据。
16.根据权利要求11所述的装置,其特征在于,确定模块,用于:
根据当前时间+(当前失败次数+1-最大失败次数)×redis自动重连步长计算redis下次重连时间。
17.根据权利要求11或16所述的装置,其特征在于,
确定模块,还用于当存取数据失败时,重新根据当前时间及预设的redis自动重连步长确定redis下次重连时间。
18.根据权利要求11所述的装置,其特征在于,所述装置还包括:
参数读取模块,用于读取记录的redis下次重连时间;
连接模块,用于当redis下次重连时间为空,或者小于等于当前时间时,从redis中间件存取数据,其中,当从系统启动开始,redis当前失败总次数小于预设失败次数阈值时,redis下次重连时间为空。
19.根据权利要求18所述的装置,其特征在于,
连接模块,用于当redis下次重连时间大于当前时间时,不使用redis中间件。
20.根据权利要求11所述的装置,其特征在于,所述参数记录模块,还用于:
当redis当前失败次数小于等于预设失败次数阈值,且两次失败之间的时间间隔超过指定时间间隔时,将指定时间间隔之前记录的失败次数清零,从0开始记录从指定时间间隔之后redis中间件存取数据失败次数。
21.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10任一所述方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至10任一所述方法的计算机程序。
CN202110982436.5A 2021-08-25 2021-08-25 redis使用控制方法及装置 Pending CN113722364A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110982436.5A CN113722364A (zh) 2021-08-25 2021-08-25 redis使用控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110982436.5A CN113722364A (zh) 2021-08-25 2021-08-25 redis使用控制方法及装置

Publications (1)

Publication Number Publication Date
CN113722364A true CN113722364A (zh) 2021-11-30

Family

ID=78677880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110982436.5A Pending CN113722364A (zh) 2021-08-25 2021-08-25 redis使用控制方法及装置

Country Status (1)

Country Link
CN (1) CN113722364A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114710569A (zh) * 2022-03-11 2022-07-05 珠海派诺科技股份有限公司 自伸缩tcp链路维持方法、系统和存储介质
CN114860782A (zh) * 2022-07-04 2022-08-05 北京世纪好未来教育科技有限公司 数据查询方法、装置、设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114710569A (zh) * 2022-03-11 2022-07-05 珠海派诺科技股份有限公司 自伸缩tcp链路维持方法、系统和存储介质
CN114860782A (zh) * 2022-07-04 2022-08-05 北京世纪好未来教育科技有限公司 数据查询方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN113722364A (zh) redis使用控制方法及装置
US20040248612A1 (en) Garbage collection system and method for a mobile communication terminal
CN110457078B (zh) 智能服务方法、装置及设备
CN112882734B (zh) 升级方法及装置、计算机设备和介质
WO2024078218A1 (zh) 系统启动方法及电子设备
CN113055483A (zh) 消息中间件数据处理方法、装置及系统
US8719622B2 (en) Recording and preventing crash in an appliance
CN111813625A (zh) 分布式服务器集群的健康检查方法及装置
CN111338905A (zh) 应用节点数据处理方法及装置
CN114138838A (zh) 数据处理方法及装置、设备和介质
CN113094571A (zh) 多平台对账方法及装置
CN110597467B (zh) 高可用数据零丢失存储系统及方法
CN109976790B (zh) 应用更新方法、装置、终端及存储介质
CN113253938B (zh) 数据处理方法、装置、设备、存储介质及计算机程序产品
CN116185755A (zh) 分布式负载均衡系统数据处理方法及装置
CN115880067A (zh) 交易异常数据处理方法及装置
CN112416641B (zh) 主从架构中被控端节点重启检测方法及主控端节点
CN110737319B (zh) 一种服务器的运行控制方法、设备以及存储介质
CN114697339A (zh) 集中式架构下的负载均衡方法及装置
CN111209143B (zh) 嵌入式系统的恢复方法、装置、嵌入式设备及存储介质
CN114697450A (zh) 一种用于确定外呼线路的方法、设备及介质
CN110149232B (zh) 分布式存储块升级iscsi服务方法、系统、装置及存储介质
CN111262794A (zh) 网关的流量控制方法及装置
CN111142790A (zh) 对磁盘写请求的控制方法、装置、电子设备及存储介质
CN113709710B (zh) 接口管理方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination