基于redis集群的多键值命令处理方法及系统技术方案

技术编号:18894739 阅读:33 留言:0更新日期:2018-09-08 11:04
本发明专利技术提供一种基于redis集群的多键值命令处理方法及系统。该基于redis集群的多键值命令处理方法包括:根据键值确定键值对应的哈希槽;获取哈希槽与节点信息的映射关系;根据哈希槽和映射关系获取节点信息;根据节点信息确定数据库连接池;从数据库连接池中获取jedis实例对象;在jedis实例对象上处理多键值命令。本发明专利技术支持在jedis实例对象上处理多键值命令,只需要一个应用程序编程接口,方便业务模块调用,具备高可用性。

Multi key command processing method and system based on redis cluster

The invention provides a multi key value command processing method and system based on redis cluster. The multi-key command processing method based on redis cluster includes: determining the hash slot corresponding to the key value according to the key value; obtaining the mapping relationship between the hash slot and the node information; obtaining the node information according to the hash slot and mapping relationship; determining the database connection pool according to the node information; obtaining the jedis instance object from the database connection pool; Handles multiple key values on jedis instance objects. The invention supports processing multi-key commands on a jedis instance object and only needs an application program interface, which is convenient for calling business modules and has high availability.

【技术实现步骤摘要】
基于redis集群的多键值命令处理方法及系统
本专利技术涉及通信
,具体地,涉及一种基于redis集群的多键值命令处理方法及系统。
技术介绍
Redis在3.0版正式引入了集群(Cluster)这个特性,令扩展变得非常简单。但Redis集群并不支持处理多键值命令,比如pipeline命令。因为这需要在不同的节点间移动数据,因此达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。
技术实现思路
本专利技术实施例的主要目的在于提供一种基于redis集群的多键值命令处理方法及系统,以支持处理多键值命令,方便业务模块进行调用。为了实现上述目的,本专利技术实施例提供一种基于redis集群的多键值命令处理方法,包括:根据键值确定键值对应的哈希槽;获取哈希槽与节点信息的映射关系;根据哈希槽和映射关系获取节点信息;根据节点信息确定数据库连接池;从数据库连接池中获取jedis实例对象;在jedis实例对象上处理多键值命令。在其中一种实施例中,节点信息包括:主节点的ip地址、主节点的端口地址、从节点的ip地址和从节点的端口地址。在其中一种实施例中,根据节点信息确定数据库连接池,具体包括:当未收到jedis连接异常信息时,根据主节点的ip地址和主节点的端口地址确定数据库连接池。在其中一种实施例中,根据节点信息确定数据库连接池,具体包括:当收到jedis连接异常信息时,根据从节点的ip地址和从节点的端口地址确定数据库连接池。在其中一种实施例中,从数据库连接池中获取jedis实例对象之后,还包括:使用类型检测命令判断jedis实例对象是否正确;当jedis实例对象不正确时,生成jedis数据移动异常信息,数据移动异常信息包括正确的节点信息;根据正确的节点信息确定正确的数据库连接池;从正确的数据库连接池中获取正确的jedis实例对象。本专利技术实施例还提供一种基于redis集群的多键值命令处理系统,包括:哈希槽确定单元,用于根据键值确定键值对应的哈希槽;映射关系获取单元,用于获取哈希槽与节点信息的映射关系;节点信息获取单元,用于根据哈希槽和映射关系获取节点信息;数据库连接池确定单元,用于根据节点信息确定数据库连接池;jedis实例对象获取单元,用于从数据库连接池中获取jedis实例对象;多键值命令处理单元,用于在jedis实例对象上处理多键值命令。在其中一种实施例中,节点信息包括:主节点的ip地址、主节点的端口地址、从节点的ip地址和从节点的端口地址。在其中一种实施例中,数据库连接池确定单元具体用于:根据主节点的ip地址和主节点的端口地址确定数据库连接池。在其中一种实施例中,数据库连接池确定单元具体用于:根据从节点的ip地址和从节点的端口地址确定数据库连接池。在其中一种实施例中,还包括:判断单元,用于使用类型检测命令判断jedis实例对象是否正确;异常信息生成单元,用于生成jedis数据移动异常信息,数据移动异常信息包括正确的节点信息;数据库连接池确定单元具体用于:根据正确的节点信息确定正确的数据库连接池;jedis实例对象获取单元具体用于:从正确的数据库连接池中获取正确的jedis实例对象。本专利技术实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:根据键值确定键值对应的哈希槽;获取哈希槽与节点信息的映射关系;根据哈希槽和映射关系获取节点信息;根据节点信息确定数据库连接池;从数据库连接池中获取jedis实例对象;在jedis实例对象上处理多键值命令。本专利技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:根据键值确定键值对应的哈希槽;获取哈希槽与节点信息的映射关系;根据哈希槽和映射关系获取节点信息;根据节点信息确定数据库连接池;从数据库连接池中获取jedis实例对象;在jedis实例对象上处理多键值命令。本专利技术实施例的基于redis集群的多键值命令处理方法,先根据键值确定键值对应的哈希槽,再根据哈希槽和获取的映射关系获取节点信息,然后根据节点信息确定数据库连接池,最后从数据库连接池中获取jedis实例对象之后,即可在jedis实例对象上处理多键值命令,只需要一个应用程序编程接口,方便业务模块调用,具备高可用性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例中基于redis集群的多键值命令处理方法的流程图;图2是本专利技术实施例中基于redis集群的多键值命令处理系统的结构框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。鉴于目前Redis集群并不支持处理多键值命令,本专利技术实施例提供一种基于redis集群的多键值命令处理方法,支持处理多键值命令,方便业务模块调用,具备高可用性。以下结合附图对本专利技术进行详细说明。图1是本专利技术实施例中基于redis集群的多键值命令处理方法的流程图。如图1所示,基于redis集群的多键值命令处理方法包括:S101:根据键值确定键值对应的哈希槽。S102:获取哈希槽与节点信息的映射关系。S103:根据哈希槽和映射关系获取节点信息。S104:根据节点信息确定数据库连接池。S105:从数据库连接池中获取jedis实例对象。S106:在jedis实例对象上处理多键值命令。图1所示的基于redis集群的多键值命令处理方法的执行主体可以为RedisUtil模块。RedisUtil模块属于Redis工具,它封装了RedisCluster的初始化,还封装了根据键值获取对应Jedis实例的接口。由图1所示的流程可知,本专利技术先根据键值确定键值对应的哈希槽,再根据哈希槽和获取的映射关系获取节点信息,然后根据节点信息确定数据库连接池,最后从数据库连接池中获取jedis实例对象之后,即可在jedis实例对象上处理多键值命令,如管道(pipeline)命令,且本专利技术只需要一个应用程序编程接口(API,ApplicationProgrammingInterface),方便业务模块调用,具备高可用性。键值(key)指的是具体的业务数据。比如客户号,交易id等。所有的业务数据是保存在节点上的。Redis集群有16384个哈希槽,每个键值通过CRC16校验后对16384个哈希槽进行取模来决定放置在哪个哈希槽。每个节点负责一部分哈希槽,比如当前redis集群有3个节点,那么节点A包含0号哈希槽到5500号哈希槽,节点B包含5501号哈希槽到11000号哈希槽,节点C包含11001号哈希槽到16384号哈希槽。其中,节点信息包括:节点对应的哈希槽的起始位置和结束位置,主节点的ip地址、主节点的端口地址、主节点的id、从节点的ip地址、从节点的端口地址和从节点的本文档来自技高网...

【技术保护点】
1.一种基于redis集群的多键值命令处理方法,其特征在于,包括:根据键值确定所述键值对应的哈希槽;获取哈希槽与节点信息的映射关系;根据所述哈希槽和所述映射关系获取节点信息;根据所述节点信息确定数据库连接池;从所述数据库连接池中获取jedis实例对象;在所述jedis实例对象上处理多键值命令。

【技术特征摘要】
1.一种基于redis集群的多键值命令处理方法,其特征在于,包括:根据键值确定所述键值对应的哈希槽;获取哈希槽与节点信息的映射关系;根据所述哈希槽和所述映射关系获取节点信息;根据所述节点信息确定数据库连接池;从所述数据库连接池中获取jedis实例对象;在所述jedis实例对象上处理多键值命令。2.根据权利要求1所述的基于redis集群的多键值命令处理方法,其特征在于,所述节点信息包括:主节点的ip地址、主节点的端口地址、从节点的ip地址和从节点的端口地址。3.根据权利要求2所述的基于redis集群的多键值命令处理方法,其特征在于,所述根据所述节点信息确定数据库连接池,具体包括:当未收到jedis连接异常信息时,根据所述主节点的ip地址和所述主节点的端口地址确定数据库连接池。4.根据权利要求2所述的基于redis集群的多键值命令处理方法,其特征在于,所述根据所述节点信息确定数据库连接池,具体包括:当收到jedis连接异常信息时,根据所述从节点的ip地址和所述从节点的端口地址确定数据库连接池。5.根据权利要求1所述的基于redis集群的多键值命令处理方法,其特征在于,所述从所述数据库连接池中获取jedis实例对象之后,还包括:使用类型检测命令判断所述jedis实例对象是否正确;当所述jedis实例对象不正确时,生成jedis数据移动异常信息,所述数据移动异常信息包括正确的节点信息;根据所述正确的节点信息确定正确的数据库连接池;从所述正确的数据库连接池中获取正确的jedis实例对象。6.一种基于redis集群的多键值命令处理系统,其特征在于,包括:哈希槽确定单元,用于根据键值确定所述键值对应的哈希槽;映射关系获取单元,用于获取哈希槽与节点信息的映射关系;节点信息获取单元,用于根据所述哈希槽和所述映射关系获取节点信息;数据库连接池确定单元,用于根据所述节点信息确定数据库连接池;jedis实例对象获取单元,用于从所述数据库连接池中获取jedis实例对象;多键值命令处理单元...

【专利技术属性】
技术研发人员:黄河峰
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1