CN105159985A - 基于redis集群的数据查询装置及方法 - Google Patents
基于redis集群的数据查询装置及方法 Download PDFInfo
- Publication number
- CN105159985A CN105159985A CN201510547138.8A CN201510547138A CN105159985A CN 105159985 A CN105159985 A CN 105159985A CN 201510547138 A CN201510547138 A CN 201510547138A CN 105159985 A CN105159985 A CN 105159985A
- Authority
- CN
- China
- Prior art keywords
- node
- slot value
- mapping relations
- access
- relations table
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Abstract
本发明公开了一种基于redis集群的数据查询装置,包括:查询请求接收模块,用于接收查询redis数据库的查询请求,所述查询请求包括键值;第一判断模块,用于根据所述键值确定对应的槽值,并判断所述确定的槽值是否存储在槽值与节点的映射关系表中;确定模块,用于在所述确定的槽值存储在槽值与节点的映射关系表中时,根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;收发模块,用于向所述查找的节点发送访问请求,并接收所述节点返回的访问结果。本发明还公开了一种基于redis集群的数据查询方法。采用本发明,可提高查询效率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于redis集群的数据查询装置及方法。
背景技术
redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-value数据库,并提供多种语言的API,redis是一个高性能的key-value存储系统。
集群技术是构建高性能网站架构的重要手段,将redis数据库分布在redis集群中的各个节点,即将redis数据库进行切片,把切片后的redis数据库根据预设规则放入到redis集群中的不同节点,降低单个节点的压力。
在redis集群中,包括多个节点,各个节点通过TCP连接建立通信连接。客户端可访问该redis集群中的节点,以访问对应的redis数据库,查找到对应的数据。在现有技术中,通过以下方式查询redis数据库,客户端向redis集群中的一个节点发送访问请求,如果该节点刚好为目的访问节点,则由该节点返回访问结果,如果该节点不是目的访问节点,由于redis集群中的节点不能代理命令请求,所以该节点向客户端返回一个MOVED重定向或ASK重定向错误,客户端根据接收的MOVED重定向或ASK重定向错误向正确的节点(目的节点)发送访问请求,以得到访问结果。采用上述方式,由于每次在需要查询redis数据库时,首先都是随意自由的向任一个节点发送第一访问请求,然后再根据第一次访问结果确定是否需要再向另一个节点发送第二访问请求,以访问到目的节点;即,需要向redis集群中的一个节点或两个节点发送访问请求,才能访问到目的节点,而在实际操作中,由于redis集群中的节点众多,通常需要先后向两个节点发送访问请求,才能访问到目的节点,访问到对应的redis数据库,查找到相应数据,查询效率低下。
发明内容
本发明的主要目的在于提出一种基于redis集群的数据查询装置及方法,旨在解决现有技术中,在访问redis集群中的redis数据库时,查询效率低下的技术问题。
为实现上述目的,本发明提供一种基于redis集群的数据查询装置,该装置包括:
查询请求接收模块,用于接收查询redis数据库的查询请求,所述查询请求包括键值;
第一判断模块,用于根据所述键值确定对应的槽值,并判断所述确定的槽值是否存储在槽值与节点的映射关系表中;
确定模块,用于在所述确定的槽值存储在槽值与节点的映射关系表中时,根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;
收发模块,用于向所述查找的节点发送访问请求,并接收所述节点返回的访问结果。
可选的,所述装置还包括第二判断模块和更新模块;
所述收发模块,还用于在所述确定的槽值未存储在槽值与节点的映射关系表中时,向默认节点发送访问请求;
所述第二判断模块,用于判断是否接收到所述默认节点返回的转向信息;
所述更新模块,用于在未接收到所述默认节点返回的转向信息时,将所述确定的槽值与默认节点建立映射关系,更新槽值与节点的映射关系表;
所述收发模块,还用于接收所述默认节点返回的访问结果。
可选的,所述更新模块,还用于在接收到所述默认节点返回的转向信息时,将所述确定的槽值与转向信息对应的转向节点建立映射关系,更新槽值与节点的映射关系表;
所述收发模块,还用于根据所述转向信息向对应的转向节点发送访问请求,及接收所述转向节点返回的访问结果。
可选的,所述装置还包括:
设置模块,用于预先设置槽值与节点的映射关系表。
可选的,所述转向信息包括转向节点的IP地址和端口号。
此外,为实现上述目的,本发明还提出一种基于redis集群的数据查询方法,该方法包括:
接收查询redis数据库的查询请求,所述查询请求包括键值;
根据所述键值确定对应的槽值,并判断所述确定的槽值是否存储在槽值与节点的映射关系表中;
若所述确定的槽值存储在槽值与节点的映射关系表中,则根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;
向所述查找的节点发送访问请求,并接收所述节点返回的访问结果。
可选的,所述判断所述确定的槽值是否存储在槽值与节点的映射关系表中的步骤之后,该方法还包括:
若所述确定的槽值未存储在槽值与节点的映射关系表中,则向默认节点发送访问请求;
判断是否接收到所述默认节点返回的转向信息;
若未接收到所述默认节点返回的转向信息,则将所述确定的槽值与默认节点建立映射关系,更新槽值与节点的映射关系表;及接收所述默认节点返回的访问结果。
可选的,所述判断是否接收到所述默认节点返回的转向信息的步骤之后,该方法还包括:
若接收到所述默认节点返回的转向信息,则将所述确定的槽值与转向信息对应的转向节点建立映射关系,更新槽值与节点的映射关系表;及根据所述转向信息向对应的转向节点发送访问请求;
接收所述转向节点返回的访问结果。
可选的,所述方法还包括:
预先设置槽值与节点的映射关系表。
可选的,所述转向信息包括转向节点的IP地址和端口号。
本发明提出的基于redis集群的数据查询装置及方法,该装置包括查询请求接收模块,用于接收查询redis数据库的查询请求,所述查询请求包括键值;第一判断模块,用于根据所述键值确定对应的槽值,并判断所述确定的槽值是否存储在槽值与节点的映射关系表中;确定模块,用于在所述确定的槽值存储在槽值与节点的映射关系表中时,根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;收发模块,用于向所述查找的节点发送访问请求,并接收所述节点返回的访问结果;即在查询redis数据库时,可根据查询请求确定需要访问的节点,然后向确定的访问节点发送访问请求,提高访问效率,避免在接收到查询请求时,随机的访问节点,造成访问效率低的问题。
附图说明
图1为本发明基于redis集群的数据查询装置第一实施例的结构示意图;
图2为本发明redis集群的一实施例示意图;
图3为本发明redis集群的另一实施例示意图;
图4为本发明基于redis集群的数据查询装置第二实施例的结构示意图;
图5为本发明基于redis集群的数据查询装置第三实施例的结构示意图;
图6为本发明基于redis集群的数据查询方法第一实施例的流程示意图;
图7为本发明基于redis集群的数据查询方法第二实施例的流程示意图;
图8为本发明基于redis集群的数据查询方法第三实施例的流程示意图;
图9为本发明基于redis集群的数据查询方法第四实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明基于redis集群的数据查询装置的第一实施例结构示意图,该装置可应用与客户端,该装置包括:
查询请求接收模块10,用于接收查询redis数据库的查询请求,该查询请求包括键值;
第一判断模块11,用于根据该键值确定对应的槽值,并判断该确定的槽值是否存储在槽值与节点的映射关系表中;
确定模块12,用于在该确定的槽值存储在槽值与节点的映射关系表中时,根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;
收发模块13,用于向该查找的节点发送访问请求,并接收该节点返回的访问结果。
该redis数据库分布在redis集群的各个节点上,redis集群是分布式的redis实现,具有一定的容错性和线性可扩展性,redis集群中各个节点负责存储数据、记录集群状态。redis集群中的各个节点通过TCP连接和一个二进制协议建立通信,每一个节点通过集群连接与集群上的其余节点建立连接。
redis集群没有使用一致性hash,而是引入了哈希槽的概念,redis集群一共有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定对应哪个槽,所有的哈希槽都必须配置在集群中的某一个节点上。redis集群中的每个节点都负责处理16384个哈希槽的其中一部分,由于redis集群的key被分割为16384个槽(slot),所以集群的最大节点数量也就是16384个,推荐的最大节点数量为1000个左右。如图2所示,在一实施例中,redis集群包括5个节点,分别为节点A、B、C、D和E,节点A包括的槽为0到1000号,节点B包括的槽为1001到5000号,节点C包括的槽为5001到10000号,节点D包括的槽为10001到16000号,节点E包括的槽为16001到16383号。
该查询请求包括键值,该键值可以是数字、字符串,还可以是列表(list)、集合(sets)、有序集合(sortedsets)、哈希表(hashes)。
该第一判断模块11对该键值通过CRC16校验后对16384取模得到对应的槽值,HASH_SLOT=CRC16(key)mod16384。CRC16校验是指循环冗余码校验,利用除法及余数的原理来做错误侦测,其中:CRC16的定义如下:(1)名称:XMODEM(也可以称为ZMODEM或CRC-16/ACORN),(2)、输出长度:16bit,(3)、多项数(poly):1021(即是x16+x12+x5+1),(4)、初始化:0000,(5)、反射输入字节(ReflectInputbyte):False,(6)、反射输入CRC(ReflectOutputCRC):False,(7)、用于输出CRC的异或常量(XorconstanttooutputCRC):0000,(8)、该算法对于输入"123456789"的输出:31C3;CRC16的16位输出中的14位会被使用。
该第一判断模块11可通过LUA动态语言调用C语言编写的hash_slot算法,计算该键值对应的槽值。LUA动态语言属于脚本语言,对算法处理的效率不高。
该槽值与节点的映射关系表可缓存在nginx服务器中。
槽值与节点的映射关系表中,记录了各个槽值与节点的映射关系,一个槽值只能对应一个节点,但是一个节点可对应多个槽值,如图3所示,槽值1对应节点1,槽值2对应节点1,槽值3对应节点2,槽值4对应节点3,槽值5对应节点2,等等。
该第一判断模块11判断确定的槽值是否存储在槽值与节点的映射关系表中,以确定能否直接找到该槽值对应的节点,当该确定的槽值存储在槽值与节点的映射关系表中,则说明能直接找到该槽值对应的节点,当该确定的槽值不存在该槽值与节点的映射关系表中,则说明不能直接找到该槽值对应的节点,需要通过其他途径找到该槽值对应的节点。
该第一判断模块11根据该确定的槽值遍历该槽值与节点的映射关系表,判断该确定的槽值是否存储在槽值与节点的映射关系表中。
该确定模块12在该确定的槽值存储在槽值与节点的映射关系表中时,在该槽值与节点的映射关系表中查找到该确定的槽值对应的节点,相应的,获取到该确定的槽值对应的节点的IP地址和端口号,还可以获取到确定的槽值对应的节点的节点标识。每个节点的节点标识唯一,该节点标识是一个十六进制表示的160位随机数,在节点第一次启动时生成,节点会将它的节点标识保存到配置文件,只要这个配置文件不被删除,节点就会一直采用这个节点标识;节点标识用于标识集群中的每一个节点,一个节点可以改变它的IP地址和端口号,而不会改变节点标识。
如在一实施例中,确定的槽值为2,在该槽值与节点的映射关系表中查找到对应的节点为节点1。
该收发模块13向该查找的节点发送访问请求,如向节点1发送访问请求,以访问该节点1对应的redis数据库,查找到相应的数据。
采用上述实施例,通过查询请求接收模块10,用于接收查询redis数据库的查询请求,该查询请求包括键值;第一判断模块11,用于根据该键值确定对应的槽值,并判断该确定的槽值是否存储在槽值与节点的映射关系表中;确定模块12,用于在该确定的槽值存储在槽值与节点的映射关系表中时,根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;收发模块13,用于向该查找的节点发送访问请求,并接收该节点返回的访问结果;即在查询redis数据库时,可根据查询请求确定需要访问的节点,然后向确定的访问节点发送访问请求,提高访问效率,避免在接收到查询请求时,随机的访问节点,造成访问效率低的问题。
参照图4,图4为本发明基于redis集群的数据查询装置的第二实施例的结构示意图。
基于上述基于redis集群的数据查询装置的第一实施例,该装置还包括第二判断模块14和更新模块15;
该收发模块13,还用于在该确定的槽值未存储在槽值与节点的映射关系表中时,向默认节点发送访问请求;
该第二判断模块14,用于判断是否接收到该默认节点返回的转向信息;
该更新模块15,用于在未接收到该默认节点返回的转向信息时,将该确定的槽值与默认节点建立映射关系,更新槽值与节点的映射关系表;
该收发模块13,还用于接收该默认节点返回的访问结果。
该默认节点可预先设置,如可随机的将redis集群中的任一节点设置为默认节点;也可以根据各个节点的历史访问记录,将访问次数最多的节点设置为默认节点;也可以由用户手动设置一个节点作为默认节点;也可以将最近一次访问成功的节点设置为默认节点。
该访问请求包括确定的槽值,该收发模块13在该确定的槽值未存储在槽值与节点的映射关系表中时,向默认节点发送访问请求,供该默认节点根据该访问请求查找对应的数据,该默认节点判断该确定的槽值对应的节点是否是默认节点本身,如果该确定的槽值对应的节点不是默认节点本身,则向发送访问请求的请求端返回转向信息,通知发送请求的请求端转向其他节点(正确的节点)发送访问请求;如果该确定的槽值对应的节点是默认节点本身,则由默认节点根据该访问请求查找到相应的数据。
该第二判断模块14判断是否接收到默认节点返回的转向信息,该转向信息包括转向节点的IP地址和端口号,还可以包括转向节点的节点标识;如果未接收到该默认节点返回的转向信息,则说明该默认节点为该确定的槽值对应的节点,可从该默认节点中查找到相应的数据;如果接收到该默认节点返回的转向信息,则说明该默认节点不是该确定的槽值对应的节点,当前访问错误,需要重新向其他节点发送访问请求。
该更新模块15在未接收到该默认节点返回的转向信息时,将该确定的槽值与默认节点建立映射关系,在该槽值与节点的映射关系表中增加一条记录,记录该确定的槽值与默认节点的映射关系;则在以后对redis集群的数据查询过程中,可直接根据该确定的槽值在槽值与节点的映射关系表中找到对应的节点,然后访问该找到的节点,可提高访问效率。如在一实施例中,该确定的槽值为10,该默认节点为节点50,在该槽值与节点的映射关系表中增加槽值10与节点50的映射关系;则在后续的查询过程中,如果根据查询请求中的键值确定的槽值为10,则可以直接获知该需要访问的节点是节点50,则向节点50发放访问请求。
进一步的,该更新模块15,还用于在接收到该默认节点返回的转向信息时,将该确定的槽值与转向信息对应的转向节点建立映射关系,更新槽值与节点的映射关系表;
该收发模块13,还用于根据该转向信息向对应的转向节点发送访问请求,及接收该转向节点返回的访问结果。
更新模块15在接收到该默认节点返回的转向信息时,认为该转向信息对应的转向节点为该确定的槽值对应的正确的访问节点,该更新模块15将该确定的槽值与该转向节点建立映射关系,在该槽值与节点的映射关系表中增加一条记录,记录该确定的槽值与转向节点的映射关系,则在以后对redis集群的数据查询过程中,可直接根据该确定的槽值在槽值与节点的映射关系表中找到对应的节点,然后访问找到的节点,可提高访问效率。
参照图5,图5为本发明基于redis集群的数据查询装置的第三实施例的结构示意图。
基于上述基于redis集群的数据查询装置的任一实施例,该装置还包括:
设置模块16,用于预先设置槽值与节点的映射关系表。
该设置模块16预先设置槽值与节点的映射关系表,如在建立redis集群时,在为各个节点分配槽值后,记录各个节点及各个节点对应的槽值,生成槽值与节点的映射关系。在redis集群的节点发生变化时,如删除节点或增加节点时,相应的更新该槽值与节点的映射关系。
本发明进一步提供一种基于redis集群的数据查询方法。
参照图6,图6为本发明基于redis集群的数据查询方法的第一实施例的流程示意图,该方法包括:
S10、接收查询redis数据库的查询请求,该查询请求包括键值。
该redis数据库分布在redis集群的各个节点上,redis集群是分布式的redis实现,具有一定的容错性和线性可扩展性,redis集群中各个节点负责存储数据、记录集群状态。redis集群中的各个节点通过TCP连接和一个二进制协议建立通信,每一个节点通过集群连接与集群上的其余节点建立连接。
redis集群没有使用一致性hash,而是引入了哈希槽的概念,redis集群一共有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定对应哪个槽,所有的哈希槽都必须配置在集群中的某一个节点上。redis集群中的每个节点都负责处理16384个哈希槽的其中一部分,由于redis集群的key被分割为16384个槽(slot),所以集群的最大节点数量也就是16384个,推荐的最大节点数量为1000个左右。如图2所示在一实施例中,redis集群包括5个节点,分别为节点A、B、C、D和E,节点A包括的槽为0到1000号,节点B包括的槽为1001到5000号,节点C包括的槽为5001到10000号,节点D包括的槽为10001到16000号,节点E包括的槽为16001到16383号。
该查询请求包括键值,该键值可以是数字、字符串,还可以是列表(list)、集合(sets)、有序集合(sortedsets)、哈希表(hashes)。
S11、根据该键值确定对应的槽值。
对该键值通过CRC16校验后对16384取模得到对应的槽值,HASH_SLOT=CRC16(key)mod16384。CRC16校验是指循环冗余码校验,利用除法及余数的原理来做错误侦测,其中:CRC16的定义如下:(1)名称:XMODEM(也可以称为ZMODEM或CRC-16/ACORN),(2)、输出长度:16bit,(3)、多项数(poly):1021(即是x16+x12+x5+1),(4)、初始化:0000,(5)、反射输入字节(ReflectInputbyte):False,(6)、反射输入CRC(ReflectOutputCRC):False,(7)、用于输出CRC的异或常量(XorconstanttooutputCRC):0000,(8)、该算法对于输入"123456789"的输出:31C3;CRC16的16位输出中的14位会被使用。
在该步骤中,可通过LUA动态语言调用C语言编写的hash_slot算法,计算该键值对应的槽值。LUA动态语言属于脚本语言,对算法处理的效率不高。
S12、判断该确定的槽值是否存储在槽值与节点的映射关系表中,若该确定的槽值存储在槽值与节点的映射关系表中,则执行步骤S13。
该槽值与节点的映射关系表可缓存在nginx服务器中。
槽值与节点的映射关系表中,记录了各个槽值与节点的映射关系,一个槽值只能对应一个节点,但是一个节点可对应多个槽值,如图3所示,槽值1对应节点1,槽值2对应节点1,槽值3对应节点2,槽值4对应节点3,槽值5对应节点2,等等。
在该步骤中,判断步骤S11中确定的槽值是否存储在槽值与节点的映射关系表中,以确定能否直接找到该槽值对应的节点,当该确定的槽值存储在槽值与节点的映射关系表中,则说明能直接找到该槽值对应的节点,当该确定的槽值不存在该槽值与节点的映射关系表中,则说明不能直接找到该槽值对应的节点,需要通过其他途径找到该槽值对应的节点。
在该步骤中,根据该确定的槽值遍历该槽值与节点的映射关系表,判断该确定的槽值是否存储在槽值与节点的映射关系表中。
S13、根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点。
在该步骤中,在该槽值与节点的映射关系表中查找到该确定的槽值对应的节点,相应的,获取到该确定的槽值对应的节点的IP地址和端口号,还可以获取到确定的槽值对应的节点的节点标识。每个节点的节点标识唯一,该节点标识是一个十六进制表示的160位随机数,在节点第一次启动时生成,节点会将它的节点标识保存到配置文件,只要这个配置文件不被删除,节点就会一直采用这个节点标识;节点标识用于标识集群中的每一个节点,一个节点可以改变它的IP地址和端口号,而不会改变节点标识。
如在一实施例中,确定的槽值为2,在该槽值与节点的映射关系表中查找到对应的节点为节点1。
S14、向该查找的节点发送访问请求,并接收该节点返回的访问结果。
向该查找的节点发送访问请求,如向节点1发送访问请求,以访问该节点1对应的redis数据库,查找到相应的数据。
采用上述实施例,通过接收查询redis数据库的查询请求,该查询请求包括键值;根据该键值确定对应的槽值,并判断该确定的槽值是否存储在槽值与节点的映射关系表中;若该确定的槽值存储在槽值与节点的映射关系表中,则根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;向该查找的节点发送访问请求,并接收该节点返回的访问结果;即在查询redis数据库时,可根据查询请求确定需要访问的节点,然后向确定的访问节点发送访问请求,提高访问效率,避免在接收到查询请求时,随机的访问节点,造成访问效率低的问题。
参照图7,图7为本发明基于redis集群的数据查询方法的第二实施例的流程示意图。
基于上述基于redis集群的数据查询方法的第一实施例,当步骤S12的判断结果为该确定的槽值未存储在槽值与节点的映射关系表中,该方法还包括:
S15、向默认节点发送访问请求。
该默认节点可预先设置,如可随机的将redis集群中的任一节点设置为默认节点;也可以根据各个节点的历史访问记录,将访问次数最多的节点设置为默认节点;也可以由用户手动设置一个节点作为默认节点;也可以将最近一次访问成功的节点设置为默认节点。
该访问请求包括确定的槽值,在该步骤中,向默认节点发送访问请求,供该默认节点根据该访问请求查找对应的数据,该默认节点判断该确定的槽值对应的节点是否是默认节点本身,如果该确定的槽值对应的节点不是默认节点本身,则向发送访问请求的请求端返回转向信息,通知发送请求的请求端转向其他节点(正确的节点)发送访问请求;如果该确定的槽值对应的节点是默认节点本身,则由默认节点根据该访问请求查找到相应的数据。
S16、判断是否接收到该默认节点返回的转向信息,若未接收到该默认节点返回的转向信息,则执行步骤S17。
在该步骤中,判断是否接收到默认节点返回的转向信息,该转向信息包括转向节点的IP地址和端口号,还可以包括转向节点的节点标识;如果未接收到该默认节点返回的转向信息,则说明该默认节点为该确定的槽值对应的节点,可从该默认节点中查找到相应的数据;如果接收到该默认节点返回的转向信息,则说明该默认节点不是该确定的槽值对应的节点,当前访问错误,需要重新向其他节点发送访问请求。
S17、将该确定的槽值与默认节点建立映射关系,更新槽值与节点的映射关系表。
在该步骤中,将该确定的槽值与默认节点建立映射关系,在该槽值与节点的映射关系表中增加一条记录,记录该确定的槽值与默认节点的映射关系;则在以后对redis集群的数据查询过程中,可直接根据该确定的槽值在槽值与节点的映射关系表中找到对应的节点,然后访问该找到的节点,可提高访问效率。如在一实施例中,该确定的槽值为10,该默认节点为节点50,在该槽值与节点的映射关系表中增加槽值10与节点50的映射关系;则在后续的查询过程中,如果根据查询请求中的键值确定的槽值为10,则可以直接获知该需要访问的节点是节点50,则向节点50发放访问请求。
S18、接收该默认节点返回的访问结果。
参照图8,图8为本发明基于redis集群的数据查询方法的第三实施例的流程示意图。
基于上述基于redis集群的数据查询方法的第二实施例,当步骤S16的判断结果为接收到该默认节点返回的转向信息,该方法还包括:
S19、将该确定的槽值与转向信息对应的转向节点建立映射关系,更新槽值与节点的映射关系表。
该转向信息对应的转向节点为该确定的槽值对应的正确的访问节点,在该步骤中,将该确定的槽值与该转向节点建立映射关系,在该槽值与节点的映射关系表中增加一条记录,记录该确定的槽值与转向节点的映射关系,则在以后对redis集群的数据查询过程中,可直接根据该确定的槽值在槽值与节点的映射关系表中找到对应的节点,然后访问找到的节点,可提高访问效率。
S20、根据该转向信息向对应的转向节点发送访问请求。
该访问请求包括确定的槽值。
S21、接收该转向节点返回的访问结果。
参照图9,图9为本发明基于redis集群的数据查询方法的第四实施例的流程示意图。
基于上述基于redis集群的数据查询方法的第一实施例、第二实施例或第三实施例,该方法还包括:
S30、预先设置槽值与节点的映射关系表。
在该步骤中,预先设置槽值与节点的映射关系表,如在建立redis集群时,在为各个节点分配槽值后,记录各个节点及各个节点对应的槽值,生成槽值与节点的映射关系。在redis集群的节点发生变化时,如删除节点或增加节点时,相应的更新该槽值与节点的映射关系。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例该的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于redis集群的数据查询装置,其特征在于,该装置包括:
查询请求接收模块,用于接收查询redis数据库的查询请求,所述查询请求包括键值;
第一判断模块,用于根据所述键值确定对应的槽值,并判断所述确定的槽值是否存储在槽值与节点的映射关系表中;
确定模块,用于在所述确定的槽值存储在槽值与节点的映射关系表中时,根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;
收发模块,用于向所述查找的节点发送访问请求,并接收所述节点返回的访问结果。
2.如权利要求1所述的基于redis集群的数据查询装置,其特征在于,所述装置还包括第二判断模块和更新模块;
所述收发模块,还用于在所述确定的槽值未存储在槽值与节点的映射关系表中时,向默认节点发送访问请求;
所述第二判断模块,用于判断是否接收到所述默认节点返回的转向信息;
所述更新模块,用于在未接收到所述默认节点返回的转向信息时,将所述确定的槽值与默认节点建立映射关系,更新槽值与节点的映射关系表;
所述收发模块,还用于接收所述默认节点返回的访问结果。
3.如权利要求2所述的基于redis集群的数据查询装置,其特征在于,所述更新模块,还用于在接收到所述默认节点返回的转向信息时,将所述确定的槽值与转向信息对应的转向节点建立映射关系,更新槽值与节点的映射关系表;
所述收发模块,还用于根据所述转向信息向对应的转向节点发送访问请求,及接收所述转向节点返回的访问结果。
4.如权利要求1-3任一项所述的基于redis集群的数据查询装置,其特征在于,所述装置还包括:
设置模块,用于预先设置槽值与节点的映射关系表。
5.如权利要求2或3所述的基于redis集群的数据查询装置,其特征在于,所述转向信息包括转向节点的IP地址和端口号。
6.一种基于redis集群的数据查询方法,其特征在于,该方法包括:
接收查询redis数据库的查询请求,所述查询请求包括键值;
根据所述键值确定对应的槽值,并判断所述确定的槽值是否存储在槽值与节点的映射关系表中;
若所述确定的槽值存储在槽值与节点的映射关系表中,则根据该确定的槽值在槽值与节点的映射关系表中查找到对应的节点;
向所述查找的节点发送访问请求,并接收所述节点返回的访问结果。
7.如权利要求6所述的基于redis集群的数据查询方法,其特征在于,所述判断所述确定的槽值是否存储在槽值与节点的映射关系表中的步骤之后,该方法还包括:
若所述确定的槽值未存储在槽值与节点的映射关系表中,则向默认节点发送访问请求;
判断是否接收到所述默认节点返回的转向信息;
若未接收到所述默认节点返回的转向信息,则将所述确定的槽值与默认节点建立映射关系,更新槽值与节点的映射关系表;及接收所述默认节点返回的访问结果。
8.如权利要求7所述的基于redis集群的数据查询方法,其特征在于,所述判断是否接收到所述默认节点返回的转向信息的步骤之后,该方法还包括:
若接收到所述默认节点返回的转向信息,则将所述确定的槽值与转向信息对应的转向节点建立映射关系,更新槽值与节点的映射关系表;及根据所述转向信息向对应的转向节点发送访问请求;
接收所述转向节点返回的访问结果。
9.如权利要求6-8任一项所述的基于redis集群的数据查询方法,其特征在于,所述方法还包括:
预先设置槽值与节点的映射关系表。
10.如权利要求7或8所述的基于redis集群的数据查询方法,其特征在于,所述转向信息包括转向节点的IP地址和端口号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510547138.8A CN105159985A (zh) | 2015-08-31 | 2015-08-31 | 基于redis集群的数据查询装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510547138.8A CN105159985A (zh) | 2015-08-31 | 2015-08-31 | 基于redis集群的数据查询装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105159985A true CN105159985A (zh) | 2015-12-16 |
Family
ID=54800841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510547138.8A Pending CN105159985A (zh) | 2015-08-31 | 2015-08-31 | 基于redis集群的数据查询装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105159985A (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
CN105631028A (zh) * | 2015-12-30 | 2016-06-01 | 中国农业银行股份有限公司 | 一种数据库集群功能实现方法和系统 |
CN106790742A (zh) * | 2016-11-23 | 2017-05-31 | 北京锐安科技有限公司 | 一种ip匹配的方法及装置 |
CN107391632A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据库存储处理方法、装置、计算设备及计算机存储介质 |
CN107493327A (zh) * | 2017-08-11 | 2017-12-19 | 杭州顺网科技股份有限公司 | 分布式缓存管理方法、系统及数据管理系统 |
CN107623493A (zh) * | 2017-09-13 | 2018-01-23 | 东南大学 | 一种高效率高保真度包络调制器 |
CN107800551A (zh) * | 2016-08-31 | 2018-03-13 | 北京优朋普乐科技有限公司 | Redis集群系统及其提高可靠性的方法、客户端 |
CN108416039A (zh) * | 2018-03-14 | 2018-08-17 | 北京思特奇信息技术股份有限公司 | 一种数据查询方法和系统 |
CN108509540A (zh) * | 2018-03-16 | 2018-09-07 | 中国银行股份有限公司 | 基于redis集群的多键值命令处理方法及系统 |
CN109597834A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 基于redis的海量数据存储方法、装置、介质和设备 |
CN109714430A (zh) * | 2019-01-16 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 分布式缓存方法、装置、计算机系统及存储介质 |
CN109739723A (zh) * | 2018-12-28 | 2019-05-10 | 深圳市网心科技有限公司 | 信息管理方法、装置、计算机装置及存储介质 |
CN109753244A (zh) * | 2018-12-29 | 2019-05-14 | 北京奥鹏远程教育中心有限公司 | 一种Redis集群的应用方法 |
CN109769028A (zh) * | 2019-01-25 | 2019-05-17 | 深圳前海微众银行股份有限公司 | Redis集群管理方法、装置、设备及可读存储介质 |
CN110351313A (zh) * | 2018-04-02 | 2019-10-18 | 武汉斗鱼网络科技有限公司 | 数据缓存方法、装置、设备及存储介质 |
CN110347718A (zh) * | 2019-05-31 | 2019-10-18 | 平安科技(深圳)有限公司 | 一种redis分片方法、装置、计算机设备和存储介质 |
CN111245943A (zh) * | 2020-01-14 | 2020-06-05 | 山东汇贸电子口岸有限公司 | 一种Redis集群获取可访问IP地址的方法 |
CN111435942A (zh) * | 2019-01-14 | 2020-07-21 | 北京京东尚科信息技术有限公司 | redis集群访问方法、系统、中间件、介质及设备 |
CN112035427A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安财产保险股份有限公司 | 基于Redis和HBase的数据查询方法及相关设备 |
CN112597172A (zh) * | 2021-01-05 | 2021-04-02 | 中国铁塔股份有限公司 | 数据写入方法、系统和存储介质 |
CN112732427A (zh) * | 2021-01-13 | 2021-04-30 | 广州虎牙科技有限公司 | 一种基于Redis集群的数据处理方法、系统和相关装置 |
WO2021237630A1 (zh) * | 2020-05-29 | 2021-12-02 | 深圳市欢太科技有限公司 | 多键值命令的处理方法、装置、电子设备及存储介质 |
CN117033395A (zh) * | 2023-10-08 | 2023-11-10 | 北京凌云雀科技有限公司 | 一种Redis集群的信息处理方法、装置、电子设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129442A (zh) * | 2010-09-20 | 2011-07-20 | 华为技术有限公司 | 一种分布式数据库系统和数据访问方法 |
US20140195566A1 (en) * | 2005-07-28 | 2014-07-10 | Gopivotal, Inc. | Distributed data management system |
CN104050249A (zh) * | 2011-12-31 | 2014-09-17 | 北京奇虎科技有限公司 | 分布式查询引擎系统和方法及元数据服务器 |
CN104156380A (zh) * | 2014-03-04 | 2014-11-19 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN104462225A (zh) * | 2014-11-12 | 2015-03-25 | 华为技术有限公司 | 一种数据读取的方法、装置及系统 |
-
2015
- 2015-08-31 CN CN201510547138.8A patent/CN105159985A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140195566A1 (en) * | 2005-07-28 | 2014-07-10 | Gopivotal, Inc. | Distributed data management system |
CN102129442A (zh) * | 2010-09-20 | 2011-07-20 | 华为技术有限公司 | 一种分布式数据库系统和数据访问方法 |
CN104050249A (zh) * | 2011-12-31 | 2014-09-17 | 北京奇虎科技有限公司 | 分布式查询引擎系统和方法及元数据服务器 |
CN104156380A (zh) * | 2014-03-04 | 2014-11-19 | 深圳信息职业技术学院 | 一种分布式存储器哈希索引方法及系统 |
CN104462225A (zh) * | 2014-11-12 | 2015-03-25 | 华为技术有限公司 | 一种数据读取的方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
黎勇等: "内存数据库在超宽带实时定位系统中应用", 《计算机应用》 * |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631028A (zh) * | 2015-12-30 | 2016-06-01 | 中国农业银行股份有限公司 | 一种数据库集群功能实现方法和系统 |
CN105631028B (zh) * | 2015-12-30 | 2020-09-18 | 中国农业银行股份有限公司 | 一种数据库集群功能实现方法和系统 |
CN105516367B (zh) * | 2016-02-02 | 2018-02-13 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
CN105516367A (zh) * | 2016-02-02 | 2016-04-20 | 北京百度网讯科技有限公司 | 分布式数据存储系统、方法和装置 |
CN107800551A (zh) * | 2016-08-31 | 2018-03-13 | 北京优朋普乐科技有限公司 | Redis集群系统及其提高可靠性的方法、客户端 |
CN106790742A (zh) * | 2016-11-23 | 2017-05-31 | 北京锐安科技有限公司 | 一种ip匹配的方法及装置 |
CN107391632A (zh) * | 2017-06-30 | 2017-11-24 | 北京奇虎科技有限公司 | 数据库存储处理方法、装置、计算设备及计算机存储介质 |
CN107391632B (zh) * | 2017-06-30 | 2021-02-23 | 北京奇虎科技有限公司 | 数据库存储处理方法、装置、计算设备及计算机存储介质 |
CN107493327A (zh) * | 2017-08-11 | 2017-12-19 | 杭州顺网科技股份有限公司 | 分布式缓存管理方法、系统及数据管理系统 |
CN107493327B (zh) * | 2017-08-11 | 2020-05-15 | 杭州顺网科技股份有限公司 | 分布式缓存管理方法、系统及数据管理系统 |
CN107623493A (zh) * | 2017-09-13 | 2018-01-23 | 东南大学 | 一种高效率高保真度包络调制器 |
CN108416039A (zh) * | 2018-03-14 | 2018-08-17 | 北京思特奇信息技术股份有限公司 | 一种数据查询方法和系统 |
CN108509540A (zh) * | 2018-03-16 | 2018-09-07 | 中国银行股份有限公司 | 基于redis集群的多键值命令处理方法及系统 |
CN110351313A (zh) * | 2018-04-02 | 2019-10-18 | 武汉斗鱼网络科技有限公司 | 数据缓存方法、装置、设备及存储介质 |
CN110351313B (zh) * | 2018-04-02 | 2022-02-22 | 武汉斗鱼网络科技有限公司 | 数据缓存方法、装置、设备及存储介质 |
CN109597834A (zh) * | 2018-10-22 | 2019-04-09 | 平安科技(深圳)有限公司 | 基于redis的海量数据存储方法、装置、介质和设备 |
CN109739723A (zh) * | 2018-12-28 | 2019-05-10 | 深圳市网心科技有限公司 | 信息管理方法、装置、计算机装置及存储介质 |
CN109753244A (zh) * | 2018-12-29 | 2019-05-14 | 北京奥鹏远程教育中心有限公司 | 一种Redis集群的应用方法 |
CN111435942B (zh) * | 2019-01-14 | 2023-04-18 | 北京京东尚科信息技术有限公司 | redis集群访问方法、系统、中间件、介质及设备 |
CN111435942A (zh) * | 2019-01-14 | 2020-07-21 | 北京京东尚科信息技术有限公司 | redis集群访问方法、系统、中间件、介质及设备 |
CN109714430A (zh) * | 2019-01-16 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 分布式缓存方法、装置、计算机系统及存储介质 |
CN109769028A (zh) * | 2019-01-25 | 2019-05-17 | 深圳前海微众银行股份有限公司 | Redis集群管理方法、装置、设备及可读存储介质 |
CN110347718A (zh) * | 2019-05-31 | 2019-10-18 | 平安科技(深圳)有限公司 | 一种redis分片方法、装置、计算机设备和存储介质 |
CN110347718B (zh) * | 2019-05-31 | 2023-12-15 | 平安科技(深圳)有限公司 | 一种redis分片方法、装置、计算机设备和存储介质 |
CN111245943A (zh) * | 2020-01-14 | 2020-06-05 | 山东汇贸电子口岸有限公司 | 一种Redis集群获取可访问IP地址的方法 |
WO2021237630A1 (zh) * | 2020-05-29 | 2021-12-02 | 深圳市欢太科技有限公司 | 多键值命令的处理方法、装置、电子设备及存储介质 |
CN112035427A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安财产保险股份有限公司 | 基于Redis和HBase的数据查询方法及相关设备 |
CN112597172A (zh) * | 2021-01-05 | 2021-04-02 | 中国铁塔股份有限公司 | 数据写入方法、系统和存储介质 |
CN112732427A (zh) * | 2021-01-13 | 2021-04-30 | 广州虎牙科技有限公司 | 一种基于Redis集群的数据处理方法、系统和相关装置 |
CN112732427B (zh) * | 2021-01-13 | 2024-03-01 | 广州虎牙科技有限公司 | 一种基于Redis集群的数据处理方法、系统和相关装置 |
CN117033395A (zh) * | 2023-10-08 | 2023-11-10 | 北京凌云雀科技有限公司 | 一种Redis集群的信息处理方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159985A (zh) | 基于redis集群的数据查询装置及方法 | |
CN1988535B (zh) | 文件存储同步方法、系统及客户端 | |
CN111190928A (zh) | 缓存处理方法、装置、计算机设备以及存储介质 | |
CN103019960B (zh) | 分布式缓存方法及系统 | |
CN108090064A (zh) | 一种数据查询方法、装置、数据存储服务器及系统 | |
US7801883B2 (en) | Method and apparatus for improving data processing speed through storage of record information of identity module | |
CN111831208B (zh) | 一种信息处理方法、装置、终端设备及存储介质 | |
CN101009516A (zh) | 一种进行数据同步的方法及系统 | |
CN111680489B (zh) | 目标文本的匹配方法和装置、存储介质及电子设备 | |
CN112748877A (zh) | 一种文件的整合上传方法及装置、文件的下载方法及装置 | |
CN103369002A (zh) | 一种资源下载的方法及系统 | |
CN114676135A (zh) | 数据存储方法、可读介质和电子设备 | |
CN111309264B (zh) | 一种使目录配额兼容快照的方法、系统、设备及介质 | |
CN112039993A (zh) | 一种长连接地址处理方法和装置 | |
CN110806979A (zh) | 接口返回值的校验方法、装置、设备及存储介质 | |
CN107977381B (zh) | 数据配置方法、索引管理方法、相关装置以及计算设备 | |
CN107357557B (zh) | 一种信息更新方法及装置 | |
CN113992664B (zh) | 一种集群通信的方法、相关装置及存储介质 | |
CN111176715B (zh) | 一种信息调用方法及服务器 | |
CN111563083A (zh) | 报表数据查询方法、装置及系统 | |
CN112579877A (zh) | 信源系统的控制方法、装置、存储介质和设备 | |
CN110287406A (zh) | 渠道用户推荐方法、服务器及计算机可读存储介质 | |
CN112579003B (zh) | 键值对的调整方法、装置、存储介质以及电子装置 | |
WO2023143061A1 (zh) | 一种数据访问方法及其数据访问系统 | |
CN111737658B (zh) | 一种限制ZooKeeper数据节点配额的方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151216 |