一种基于Redis通用代理的实现方法、存储介质及电子设备与流程

文档序号:14396030阅读:109来源:国知局

本发明涉及数据处理领域,尤其涉及一种基于redis通用代理的实现方法、存储介质及电子设备。



背景技术:

redis是一款开源的、高性能的键-值存储(key-valuestore)系统。redis的所有键值都存储在内存中,具有很高的单机读写性能。操作redis时,需要按照redis协议规范与redis服务器进行通信。redis从2.8版本开始提供了sentinel功能,当redis配置了主从模式时,通过sentinel可以进行主从切换。

在现有技术中,redis存在如下问题:redis的命令无法跨越多个redis实例,同一个操作可能操作多个key,现有的redis客户端无法保证多个key在同一个redis实例上,同一个操作可能操作多个key。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种基于redis通用代理的实现方法,其能解决redis的命令无法跨越多个redis实例,同一个操作可能操作多个key,现有的redis客户端无法保证多个key在同一个redis实例上,同一个操作可能操作多个key的问题。

本发明的目的之二在于提供一种一种电子设备,其能解决redis的命令无法跨越多个redis实例,同一个操作可能操作多个key,现有的redis客户端无法保证多个key在同一个redis实例上,同一个操作可能操作多个key的问题。

本发明的目的之三在于提供一种计算机可读存储介质,其能解决redis的命令无法跨越多个redis实例,同一个操作可能操作多个key,现有的redis客户端无法保证多个key在同一个redis实例上,同一个操作可能操作多个key的问题。

本发明的目的之一采用以下技术方案实现:

一种基于redis通用代理的实现方法,该方法包括以下步骤:

redis通用代理时,首先需要进行初始化,包括步骤1-3:

步骤1:redis通用代理连接配置,配置集群内所述redissentinel的连接信息;

步骤2:连接到redissentinel,通过sentinelmasters命令获取master实例,并记录到集合masters;

步骤3:连接到redissentinel,遍历集合masters通过sentinelslaves命令获取所述master实例关联的slave实例,记录所述master实例与所述slave实例之间的关系;

步骤4:将所述master实例、所述slave实例通过采用一致性哈希算法进行分布;

步骤5:通过redissentinelpsubscribe命令订阅switch-master消息;

步骤6:客户端调用redis代理接口,创建代理连接句柄,通过连接所述代理句柄执行redis命令。

进一步地,当调用redis通用代理执行命令时,执行以下步骤:

步骤a:判断是否指定了key的业务前缀,若是,则计算key业务前缀的hash值,若否,则计算完整key的hash值;

步骤b:通过hash值选择redis的实例;

步骤c:查看连接池中是否有可用的到选定redis实例的tcp长连接,如果有则使用所述tcp长连接;

步骤d:在所述tcp长连接上发送redis命令;

步骤e:收到redis响应报文后,执行redis协议解释流程;

步骤f:将响应命令的返回值发送至客户端。

进一步地,所述计算key业务前缀的hash值具体为通过哈希一致性算法计算key业务前缀的hash值;所述计算完整key的hash值具体为:通过哈希一致性算法计算完整key的hash值。

进一步地,redis发生主从切换时,执行以下步骤:

步骤g:处理psubscribe命令订阅到的switch-master消息,并获取redissentinel实例连接信息;

步骤h:通过sentinelslave命令,获取master实例对应所有的slave实例并重新更新master与slave实例之间的关系;

步骤i:释放连接池中与所述master和slave实例相关的tcp长连接。

本发明的目的之二采用以下技术方案实现:

一种电子设备,其特征在于包括:处理器;

存储器;以及程序,其中所述程序被存储在所述存储器中,并且被配置成由处理器执行,所述程序包括本发明的一种基于redis通用代理的实现方法。

本发明的目的之三采用以下技术方案实现:

一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行本发明的一种基于redis通用代理的实现方法。

相比现有技术,本发明的有益效果在于:本发明的一种基于基于redis通用代理的实现方法,通过redis通用代理连接配置,记录master实例与slave实例之间的关系,将master实例、slave实例通过采用一致性哈希算法进行分布,可以通过一致性hash方式管理key在集群中的分布,并且可以保证各个实例之间分布的均匀性;如果指定了实例的权重,则各个实例按照权重的比例分配key。redis通用代理可以配合sentinel功能,在代理端实现主从切换,在发生故障切换时通过sentinel相关命令发现新的redis实例,主从切换完成后,会与新的实例进行通信;保证服务的高可用性;redis通用代理可以指定key的业务前缀,只按照key的业务前缀部分进行一致性hash,可以保证某一类业务的key值散列到同一个redis实例中,便于需要多个key的运算。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明的一种基于redis通用代理的实现方法的流程图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

如图1所示的一种基于redis通用代理的实现方法包括以下步骤:

redis通用代理时,首先需要进行初始化,包括步骤1-3:

步骤1:redis通用代理连接配置,配置集群内redissentinel的连接信息;

步骤2:连接到redissentinel,通过sentinelmasters命令获取master实例,并记录到集合masters;

步骤3:连接到redissentinel,遍历集合masters通过sentinelslaves命令获取master实例关联的slave实例,记录master实例与slave实例之间的关系;

步骤4:将master实例、slave实例通过采用一致性哈希算法进行分布;

步骤5:通过redissentinelpsubscribe命令订阅switch-master消息;

步骤6:客户端调用redis代理接口,创建代理连接句柄,通过连接代理句柄执行redis命令。

当调用redis通用代理执行命令时,执行以下步骤:

步骤a:判断是否指定了key的业务前缀,若是,则计算key业务前缀的hash值,若否,则计算完整key的hash值,计算key业务前缀的hash值具体为通过哈希一致性算法计算key业务前缀的hash值;计算完整key的hash值具体为:通过哈希一致性算法计算完整key的hash值。

步骤b:通过hash值选择redis的实例;

步骤c:查看连接池中是否有可用的到选定redis实例的tcp长连接,如果有则使用tcp长连接;

步骤d:在tcp长连接上发送redis命令;

步骤e:收到redis响应报文后,执行redis协议解释流程;

步骤f:将响应命令的返回值发送至客户端。

redis发生主从切换时,执行以下步骤:

步骤g:处理psubscribe命令订阅到的switch-master消息,并获取redissentinel实例连接信息;

步骤h:通过sentinelslave命令,获取master实例对应所有的slave实例并重新更新master与slave实例之间的关系;

步骤i:释放连接池中与master和slave实例相关的tcp长连接。

本发明的一种电子设备,其特征在于包括:处理器;

存储器;以及程序,其中程序被存储在存储器中,并且被配置成由处理器执行,程序包括用于执行本发明的一种基于redis通用代理的实现方法。

本发明的一种计算机可读存储介质,其上存储有计算机程序,其特征在于:计算机程序被处理器执行本发明的一种基于redis通用代理的实现方法。

本发明的一种基于redis通用代理的实现方法,通过redis通用代理连接配置,记录master实例与slave实例之间的关系,将master实例、slave实例通过采用一致性哈希算法进行分布,可以通过一致性hash方式管理key在集群中的分布,并且可以保证各个实例之间分布的均匀性;redis通用代理可以配合sentinel功能,在代理端实现主从切换,在发生故障切换时通过sentinel相关命令发现新的redis实例,主从切换完成后,会与新的实例进行通信;保证服务的高可用性;redis通用代理可以指定key的业务前缀,只按照key的业务前缀部分进行一致性hash,可以保证某一类业务的key值散列到同一个redis实例中,便于需要多个key的运算。

以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1