CN112732427A - 一种基于Redis集群的数据处理方法、系统和相关装置 - Google Patents

一种基于Redis集群的数据处理方法、系统和相关装置 Download PDF

Info

Publication number
CN112732427A
CN112732427A CN202110044402.1A CN202110044402A CN112732427A CN 112732427 A CN112732427 A CN 112732427A CN 202110044402 A CN202110044402 A CN 202110044402A CN 112732427 A CN112732427 A CN 112732427A
Authority
CN
China
Prior art keywords
node
redis cluster
connection
slot
data processing
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.)
Granted
Application number
CN202110044402.1A
Other languages
English (en)
Other versions
CN112732427B (zh
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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202110044402.1A priority Critical patent/CN112732427B/zh
Publication of CN112732427A publication Critical patent/CN112732427A/zh
Application granted granted Critical
Publication of CN112732427B publication Critical patent/CN112732427B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请公开了一种基于Redis集群的数据处理方法、系统和相关装置,其中,基于Redis集群的数据处理方法包括:响应于Redis集群处于预设阶段,利用反射机制获取客户端的连接类文件以及连接类文件中的连接属性;获取到多个操作指令,其中,操作指令包括键值;基于操作指令获取键值在Redis集群中对应的槽位;利用连接属性确定槽位在Redis集群中对应的节点,以获得每个节点对应的多个槽位;对属于同一节点的多个槽位对应的键值进行批量操作。上述方案,能够在Redis集群中对键值进行批量操作,以提高数据处理的效率。

Description

一种基于Redis集群的数据处理方法、系统和相关装置
技术领域
本申请涉及计算机通信技术领域,特别是涉及一种基于Redis集群的数据处理方法、系统和相关装置。
背景技术
随着信息爆炸时代的来临,对于数据处理效率的要求也越来越高,传统的主从版Redis的性能已难以满足大数据量的应用场景,因此,能够进行拓展的Redis集群应运而生。
虽然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是图3中步骤S306对应的一实施例的流程示意图;
图5是本申请基于Redis集群的数据处理系统一实施例的框架示意图;
图6是本申请基于Redis集群的数据处理系统另一实施例的框架示意图;
图7是本申请电子设备一实施例的框架示意图;
图8是本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
请参阅图1,图1是本申请基于Redis集群的数据处理方法一实施例的流程示意图。具体而言,可以包括如下步骤:
步骤S101:响应于Redis集群处于预设阶段,利用反射机制获取客户端的连接类文件以及连接类文件中的连接属性。
具体地,Redis(Remote Dictionary Server),即远程字典服务,是一种开源的、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用服务接口。Redis集群可以自由地进行拓展以提高数据处理的能力,并且,Redis集群提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,因此Redis集群在大数据量的数据处理应用场景中逐渐成为主流的应用方式。
进一步地,Redis集群的预设阶段为Redis集群启动后处于初始化阶段,利用Java提供的反射机制获取客户端的连接类文件,进而再次利用反射机制从连接类文件中获取到连接属性,使得连接属性公开以供使用。
在一实施场景中,在Redis集群处于初始化阶段时,利用反射机制从Jedis客户端获取连接类文件ConnectionHandler,进而再次利用反射机制从ConnectionHandler中获取连接属性InfoCache。其中,连接属性InfoCache保存有节点和槽位的对应关系。因而,连接属性InfoCache主要用于保存集群的配置信息,并且是Jedis客户端初始化部分的核心所在。连接类文件ConnectionHandler是连接属性InfoCache的一个窗口,连接属性InfoCache类似数据管理层,而连接类文件ConnectionHandler就类似于操控数据提供服务的Service层。
步骤S102:获取到多个操作指令,其中,操作指令包括键值。
具体地,Redis集群用于对数据进行缓存,针对Redis集群的操作指令主要是对Redis集群中的键值进行读写的操作指令,而Redis集群需要进行大数据量的数据处理工作,Redis集群会接收到多个对键值进行读写的操作指令,对于需要写入的键值,操作指令中包含有对应的键值。
步骤S103:基于操作指令获取键值在Redis集群中对应的槽位。
具体地,Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群一共有16384个哈希槽,也即16384个槽位,每个操作指令都需要根据键值运算一个槽位,然后根据槽位去执行操作指令。
在一实施场景中,对每个键值进行CRC16校验后对16384取模以获取键值对应的槽位,也就是对每个键值进行循环冗余码校验后再将键值对16384取模,形成键值与槽位的映射关系。
步骤S104:利用连接属性确定槽位在Redis集群中对应的节点,以获得每个节点对应的多个槽位。
具体地,Redis集群所有的槽位都必须配置在集群中的某一个节点上,Redis集群中的每个节点都负责处理16384个哈希槽的其中一部分。
进一步地,上述步骤S101中所公开的连接属性,其中包含有槽位与节点的映射关系,利用上述连接属性即可确定槽位所对应的节点。当存在多个操作指令时,多个操作指令包括的键值对应有多个槽位,在确定槽位与节点的对应关系后,即可获得节点对应的槽位,并且节点通常对应有多个槽位。
在一实施场景中,请参阅图2,图2是本申请Redis集群一实施例的拓扑示意图,该Redis集群包括A、B、C三个节点,其中节点A包括0-5460的槽位,节点B包括5461-10922的槽位,节点C包括10923-16383的槽位。如果键值取模后获得有多个槽位,根据取模后得到的数值即可获得槽位对应的具体节点,进而根据键值和槽位对应的关系可获得键值对应的节点。
步骤S105:对属于同一节点的多个槽位对应的键值进行批量操作。
具体地,当获得属于同一节点的多个槽位对应的键值后,也就获得了需要运用同一节点去处理的操作指令。在现有技术中,由于无法获取到每个操作指令需要运用哪个节点来进行操作,则只能对操作指令进行逐个操作,但是在本实施例中,当同一节点对应的操作指令被获得后,即可对属于同一节点的操作指令进行批量操作,也就是说,可以对当前属于同一节点的键值进行批量读写。
上述方案,在Redis集群处于预设阶段时,利用反射机制获取到连接属性,当接收到多个操作指令时,获取操作指令包括的键值所对应的槽位,利用连接属性确定槽位对应的节点,进而确定同一节点对应的键值,并对属于同一节点的键值批量操作。本实施例利用反射机制获取到连接属性并藉由连接属性获取到槽位对应的节点,进而对属于同一节点的槽位所对应的键值进行批量操作,使得操作指令不再局限于逐个执行,减轻了数据处理对Redis集群的性能造成的影响,提高了数据处理的效率。
请参阅图3,图3是本申请基于Redis集群的数据处理方法另一实施例的流程示意图。具体而言,可以包括如下步骤:
步骤S301:响应于Redis集群处于预设阶段,利用反射机制获取客户端的连接类文件以及连接类文件中的连接属性。
具体地,反射机制由Java提供,对于任意一个类,利用反射机制能够获取这个类的所有属性和方法,对于任意一个对象,利用反射机制能够调用它的任意方法和属性。但是,反射机制并不能滥用,如果反射机制使用不当,对于Redis集群的性能具有负面影响。
进一步地,预设阶段为Redis集群的软件组件模型处于初始化阶段,在软件组件模型还处于初始化时便利用反射机制将连接属性公开,以降低使用反射机制对Redis集群性能的影响。
进一步地,利用反射机制获取客户端的连接类文件以及连接类文件中的连接属性具体包括:当连接类文件通过客户端的应用程序接口无法直接访问时,利用反射机制从客户端获取连接类文件,以使连接类文件能够被访问;当连接属性在连接类文件中为非公开状态时,利用反射机制从连接类文件中获取连接属性,以使连接属性公开。
具体地,在软件组件模型处于初始化阶段时,判断连接属性能否调用,若不能调用,则说明连接属性在连接类文件中为非公开状态,那么通过客户端提供的应用程序接口也无法访问连接类文件,利用Java提供的反射机制使连接类文件公开,以使连接类文件能够被访问。进而,在连接类文件可被访问后,再次利用反射机制从连接类文件中获取连接属性,使得连接属性公开。
在一实施场景中,Redis集群的软件组件模型为Java Bean,客户端为Jedis,当Jave Bean处于初始化阶段时,利用Java的反射机制从Jedis中获取被保护的连接类文件“ConnectionHandler”,以突破限制获取到JedisSlotBasedConnectionHandler这个连接类文件,进而再次利用反射机制从JedisSlotBasedConnectionHandler中获取受保护的属性“Cache”,以获取到JedisClusterInfoCache这个连接属性,使JedisClusterInfoCache在Jave Bean的初始化阶段便公开。
步骤S302:获取到多个操作指令,其中,操作指令包括键值。
具体地,操作指令中包含需要进行读写的键值,在Redis集群开始对数据进行缓存后,需要对大量的键值进行读写,因此,Redis集群会接收到多个操作指令。
步骤S303:基于操作指令获取键值在Redis集群中对应的槽位。
具体地,上述步骤S303具体可以包括:对操作指令包括的键值进行校验并对键值与预设数值取模,以获得键值在Redis集群中对应的槽位,进而确定操作指令对应的槽位。
进一步地,对键值进行校验可降低数据传输过程中受到干扰的错误数据存入Redis集群的概率,进而与预设数值取模可准确生成键值与槽位的对应关系。
在一实施场景中,利用Jedis客户端提供的校验类文件对键值进行校验,通过JedisClusterCRC16.getSlot(key)计算键值的槽位,当键值通过CRC16校验后对16384取模得到键值对应的槽位,由于Redis集群包括16384个槽位,因此在取模时预设数值为16384,利用校验后的键值与16384进行取模操作,以获得键值所对应的槽位,生成键值与槽位的对应关系。
步骤S304:基于槽位和节点的映射关系,获得槽位在Redis集群中对应的节点。其中,每个节点对应多个槽位。
具体地,连接属性提供了槽位和节点的映射关系,连接属性内置于客户端,也就是说连接属性中包含了槽位和节点的映射关系表,但是连接属性在客户端为受保护的状态。
可以理解的是,上述步骤S301中,在软件组件模型处于初始化阶段,利用Java提供的反射机制突破客户端对连接属性的保护,以便捷且高效的方式使连接属性得以公开,进而使得槽位和节点的映射关系能够被调用。
进一步地,槽位与节点的映射关系表中,记录了各个槽位与节点的映射关系,一个槽位只能对应一个节点,但是一个节点可对应多个槽位。在上述步骤S303中获得操作指令包括的键值所对应的槽位后,基于连接属性所提供的槽位和节点的映射关系表,通过查找槽位和节点的映射关系表的方式,即可便捷地获取到操作指令所要用到的槽位所对应的节点。
步骤S305:基于操作指令包括的键值与槽位的对应关系,获得操作指令包括的键值在Redis集群中对应的节点。其中,每个节点对应多个键值。
具体地,在步骤S303中获取到了操作指令所包括的键值与槽位的对应关系,在步骤S304中获取到了槽位与节点的对应关系,进而藉由槽位这个中间变量来确定操作指令包括的键值与节点的对应关系,以获得属于同一节点的键值。
进一步地,在确定属于同一节点的键值之后则可以将操作指令按照节点进行分类,获得属于同一节点的操作指令,进而Redis集群所获取到的多个操作指令得以完成分类,为在相同节点上的键值进行批量操作提供了基础,以最终提高数据处理的效率。
步骤S306:对属于同一节点的多个槽位对应的键值进行批量操作。
具体地,由于Redis集群中的每个节点都负责处理16384个槽位的其中一部分,每个操作指令都需要根据键值运算一个槽位,然后根据槽位去执行操作指令,那么对于属于同一节点的键值,则在调用节点时可将节点所负责的槽位对应的键值进行批量读写。
在一实施方式中,请参阅图4,图4是图3中步骤S306对应的一实施例的流程示意图,上述步骤S306具体包括:
步骤S401:基于同一节点对应的多个键值和操作指令,生成节点的流程操作指令。
具体地,在获得同一节点对应的多个键值后,结合包含相应键值的操作指令,生成每个节点对应的对键值进行批量操作的流程操作指令,以使单个节点所对应的键值能够实现批量操作,减轻Redis集群的负担。
进一步地,连接属性还包括每个节点对应的连接池,在Jedis客户端,连接属性InfoCache还提供了节点所对应的连接池JedisPool。
在一实施方式中,在获得同一节点对应的键值后,确定属于同一节点的操作指令,根据操作指令的ID来确定操作指令的执行顺序,利用连接属性获取节点对应的连接池,利用连接池使用Redis集群的Pipeline生成同一节点的流程操作指令。
在另一实施方式中,在获得同一节点对应的键值后,确定属于同一节点的操作指令,根据操作指令的下达时间节点的先后顺序来确定操作指令的执行顺序,利用连接属性获取节点对应的连接池,利用连接池使用Redis集群的Pipeline生成同一节点的流程操作指令。
步骤S402:执行流程操作指令以对节点对应的多个键值进行批量读写操作,以获得节点的操作结果。
具体地,节点中槽位的数值越小则该节点的优先级越高,请再次参阅图2,图2中节点A的优先级最高。对每个节点的流程操作指令按照优先级从高到低依次执行,以完成对每个节点的流程操作指令的执行,获得每个节点对应的操作结果。
步骤S403:合并每个节点的操作结果,以获得多个操作指令的目标操作结果。
具体地,将多个操作指令所对应的节点的操作结果合并返回,以获得多个操作指令所期望得到的目标操作结果,使得当前的多个操作指令在多个节点上分别批量执行后返回,避免逐个执行操作指令,大大提高了操作指令的执行效率。
上述方案,利用反射机制获得连接属性,通过槽位作为中间变量将节点与键值对应,生成每个节点对键值进行批量操作的流程操作指令,以使每个节点对应的操作指令能够批量执行,大大提高操作指令执行的效率,减轻Redis集群的负担,提高Redis集群的性能。
请参阅图5,图5是本申请基于Redis集群的数据处理系统一实施例的框架示意图,数据处理系统50具体包括:属性获取模块500、指令获取模块502、槽位获取模块504、槽位确定模块506和键值操作模块508。其中,属性获取模块500用于响应于Redis集群处于预设阶段,利用反射机制获取客户端的连接类文件以及连接类文件中的连接属性;指令获取模块502用于获取到多个操作指令,其中,操作指令包括键值;槽位获取模块504用于基于操作指令获取键值在Redis集群中对应的槽位;槽位确定模块506用于利用连接属性确定槽位在Redis集群中对应的节点,以获得每个节点对应的多个槽位;键值操作模块508用于对属于同一节点的多个槽位对应的键值进行批量操作。
上述方案,在Redis集群处于预设阶段时,属性获取模块500利用反射机制获取到连接属性,当指令获取模块502接收到多个操作指令时,槽位获取模块504获取操作指令包括的键值所对应的槽位,槽位确定模块506利用连接属性确定槽位对应的节点,进而确定同一节点对应的键值,键值操作模块508对属于同一节点的键值批量操作。本实施例使得操作指令不再局限于逐个执行,减轻了数据处理对Redis集群的性能造成的影响,提高了数据处理的效率。
在一些实施例中,上述预设阶段为Redis集群的软件组件模型处于初始化阶段。
在一些实施例中,属性获取模块500还可以用于当连接类文件通过客户端的应用程序接口无法直接访问时,利用反射机制从客户端获取连接类文件,以使连接类文件能够被访问;当连接属性在连接类文件中为非公开状态时,利用反射机制从连接类文件中获取连接属性,以使连接属性公开。
在一些实施例中,槽位获取模块504还可以用于对操作指令包括的键值进行校验并对键值与预设数值取模,以获得键值在Redis集群中对应的槽位,进而确定操作指令对应的槽位。
在一些实施例中,连接属性提供了槽位和节点的映射关系。槽位确定模块506还可以用于基于槽位和节点的映射关系,获得槽位在Redis集群中对应的节点;其中,每个节点对应多个槽位。
在一些实施例中,键值操作模块508还可以用于基于同一节点对应的多个键值和操作指令,生成节点的流程操作指令;执行流程操作指令以对节点对应的多个键值进行批量读写操作,以获得节点的操作结果;合并每个节点的操作结果,以获得多个操作指令的目标操作结果。
请参阅图6,图6是本申请基于Redis集群的数据处理系统另一实施例的框架示意图,数据处理系统60区别于图5中的数据处理系统50,数据处理系统60还包括键值确定模块510,键值确定模块510具体可以用于基于操作指令包括的键值与槽位的对应关系,获得操作指令包括的键值在Redis集群中对应的节点;其中,每个节点对应多个键值。
请参阅图7,图7是本申请电子设备一实施例的框架示意图。电子设备70包括相互耦接的存储器701和处理器702,存储器701存储有程序指令,处理器702用于执行存储器701中存储的程序指令,以实现上述任一基于Redis集群的数据处理方法实施例的步骤。
具体而言,处理器702用于控制其自身以及存储器701以实现上述任一基于Redis集群的数据处理方法实施例的步骤。处理器702还可以称为CPU(Central ProcessingUnit,中央处理单元)。处理器702可能是一种集成电路芯片,具有信号的处理能力。处理器702还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器702可以由集成电路芯片共同实现。
上述方案,处理器702利用反射机制在预设阶段获取到连接属性,利用连接属性确定操作指令包括的键值所对应的槽位与节点的对应关系,进而确定属于同一节点的键值,对属于同一节点的键值进行批量操作,提高了键值处理的效率和Redis集群的性能。
请参阅图8,图8是本申请计算机可读存储介质一实施例的框架示意图。计算机可读存储介质80存储有能够被处理器运行的程序指令800,程序指令800用于实现上述任一基于Redis集群的数据处理方法实施例的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (10)

1.一种基于Redis集群的数据处理方法,其特征在于,包括:
响应于所述Redis集群处于预设阶段,利用反射机制获取客户端的连接类文件以及所述连接类文件中的连接属性;
获取到多个操作指令,其中,所述操作指令包括键值;
基于所述操作指令获取所述键值在所述Redis集群中对应的槽位;
利用所述连接属性确定所述槽位在所述Redis集群中对应的节点,以获得每个节点对应的多个槽位;
对属于同一所述节点的多个所述槽位对应的键值进行批量操作。
2.根据权利要求1所述的数据处理方法,其特征在于,所述预设阶段为所述Redis集群的软件组件模型处于初始化阶段。
3.根据权利要求1所述的数据处理方法,其特征在于,所述利用反射机制获取客户端的连接类文件以及所述连接类文件中的连接属性的步骤,包括:
当所述连接类文件通过所述客户端的应用程序接口无法直接访问时,利用反射机制从所述客户端获取所述连接类文件,以使所述连接类文件能够被访问;
当所述连接属性在所述连接类文件中为非公开状态时,利用反射机制从所述连接类文件中获取所述连接属性,以使所述连接属性公开。
4.根据权利要求1所述的数据处理方法,其特征在于,所述基于所述操作指令获取所述键值在所述Redis集群中对应的槽位的步骤,包括:
对所述操作指令包括的键值进行校验并对所述键值与预设数值取模,以获得所述键值在所述Redis集群中对应的槽位,进而确定所述操作指令对应的槽位。
5.根据权利要求1所述的数据处理方法,其特征在于,
所述连接属性提供了所述槽位和所述节点的映射关系;
所述利用所述连接属性确定所述槽位在所述Redis集群中对应的节点,以获得每个节点对应的多个槽位的步骤,包括:
基于所述槽位和所述节点的映射关系,获得所述槽位在所述Redis集群中对应的节点;其中,每个所述节点对应多个所述槽位。
6.根据权利要求5所述的数据处理方法,其特征在于,所述基于所述槽位和所述节点的映射关系,获得所述操作指令对应的槽位在所述Redis集群中对应的节点的步骤之后,还包括:
基于所述操作指令包括的键值与所述槽位的对应关系,获得所述操作指令包括的键值在所述Redis集群中对应的节点;其中,每个所述节点对应多个键值。
7.根据权利要求6所述的数据处理方法,其特征在于,所述对属于同一所述节点的多个所述槽位对应的键值进行批量操作的步骤,包括:
基于所述同一所述节点对应的多个键值和所述操作指令,生成所述节点的流程操作指令;
执行所述流程操作指令以对所述节点对应的多个键值进行批量读写操作,以获得所述节点的操作结果;
合并每个所述节点的操作结果,以获得所述多个操作指令的目标操作结果。
8.一种基于Redis集群的数据处理系统,其特征在于,包括:
属性获取模块,用于响应于所述Redis集群处于预设阶段,利用反射机制获取客户端的连接类文件以及所述连接类文件中的连接属性;
指令获取模块,用于获取到多个操作指令,其中,所述操作指令包括键值;
槽位获取模块,用于基于所述操作指令获取所述键值在所述Redis集群中对应的槽位;
槽位确定模块,用于利用所述连接属性确定所述槽位在所述Redis集群中对应的节点,以获得每个节点对应的多个槽位;
键值操作模块,用于对属于同一所述节点的多个所述槽位对应的键值进行批量操作。
9.一种电子设备,其特征在于,包括:相互耦接的存储器和处理器,其中,所述存储器存储有程序指令,所述处理器调用所述程序指令以执行如权利要求1-7中任一项所述的数据处理方法。
10.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1-7中任一项所述的数据处理方法。
CN202110044402.1A 2021-01-13 2021-01-13 一种基于Redis集群的数据处理方法、系统和相关装置 Active CN112732427B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110044402.1A CN112732427B (zh) 2021-01-13 2021-01-13 一种基于Redis集群的数据处理方法、系统和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110044402.1A CN112732427B (zh) 2021-01-13 2021-01-13 一种基于Redis集群的数据处理方法、系统和相关装置

Publications (2)

Publication Number Publication Date
CN112732427A true CN112732427A (zh) 2021-04-30
CN112732427B CN112732427B (zh) 2024-03-01

Family

ID=75592502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110044402.1A Active CN112732427B (zh) 2021-01-13 2021-01-13 一种基于Redis集群的数据处理方法、系统和相关装置

Country Status (1)

Country Link
CN (1) CN112732427B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116521688A (zh) * 2023-07-04 2023-08-01 浩鲸云计算科技股份有限公司 一种基于Redis集群的KEY前缀操作键值方法
CN117439993A (zh) * 2023-12-22 2024-01-23 中电云计算技术有限公司 Redis集群负载均衡方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105159985A (zh) * 2015-08-31 2015-12-16 努比亚技术有限公司 基于redis集群的数据查询装置及方法
US9817703B1 (en) * 2013-12-04 2017-11-14 Amazon Technologies, Inc. Distributed lock management using conditional updates to a distributed key value data store
CN108509540A (zh) * 2018-03-16 2018-09-07 中国银行股份有限公司 基于redis集群的多键值命令处理方法及系统
CN111177245A (zh) * 2019-12-25 2020-05-19 中国平安财产保险股份有限公司 Redis集群的键值遍历方法、服务器及存储介质
CN111858678A (zh) * 2020-07-27 2020-10-30 中国平安财产保险股份有限公司 基于Redis的key值删除方法、计算机设备、装置和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9817703B1 (en) * 2013-12-04 2017-11-14 Amazon Technologies, Inc. Distributed lock management using conditional updates to a distributed key value data store
CN105159985A (zh) * 2015-08-31 2015-12-16 努比亚技术有限公司 基于redis集群的数据查询装置及方法
CN108509540A (zh) * 2018-03-16 2018-09-07 中国银行股份有限公司 基于redis集群的多键值命令处理方法及系统
CN111177245A (zh) * 2019-12-25 2020-05-19 中国平安财产保险股份有限公司 Redis集群的键值遍历方法、服务器及存储介质
CN111858678A (zh) * 2020-07-27 2020-10-30 中国平安财产保险股份有限公司 基于Redis的key值删除方法、计算机设备、装置和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
布碗: "Redis学习(三):redis集群之cluster模式下的跨节点的批量操作 II", pages 1 - 7, Retrieved from the Internet <URL:《https://blog.csdn.net/sinat_36553913/article/details/90551403》> *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116521688A (zh) * 2023-07-04 2023-08-01 浩鲸云计算科技股份有限公司 一种基于Redis集群的KEY前缀操作键值方法
CN116521688B (zh) * 2023-07-04 2023-09-26 浩鲸云计算科技股份有限公司 一种基于Redis集群的KEY前缀操作键值方法
CN117439993A (zh) * 2023-12-22 2024-01-23 中电云计算技术有限公司 Redis集群负载均衡方法、装置、设备及存储介质
CN117439993B (zh) * 2023-12-22 2024-04-16 中电云计算技术有限公司 Redis集群负载均衡方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112732427B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
CN107832062B (zh) 一种程序更新方法及终端设备
WO2019169723A1 (zh) 测试用例选择方法、装置、设备以及计算机可读存储介质
CN112732427B (zh) 一种基于Redis集群的数据处理方法、系统和相关装置
CN113608692B (zh) 一种存储系统数据一致性验证方法、系统、设备以及介质
CN112434278A (zh) 一种裸机认证方法、装置、设备及介质
CN111563218A (zh) 一种页面的修复方法及装置
CN115408730A (zh) 数据处理方法、芯片、电子设备及存储介质
CN112383402A (zh) 双重幂等验证方法及服务器
JP4726915B2 (ja) コンピュータ構成においてデバイスのクリティカル性を判断する方法及びシステム
CN111651239A (zh) 一种虚拟机克隆方法、装置、设备、介质
CN114020525A (zh) 故障隔离方法、装置、设备及存储介质
WO2019047142A1 (zh) 程序打补丁的方法、装置、微控制单元和终端设备
CN115470303B (zh) 一种数据库访问方法、装置、系统、设备及可读存储介质
US10761940B2 (en) Method, device and program product for reducing data recovery time of storage system
CN113132241B (zh) Acl模板动态配置方法及装置
CN116610336A (zh) 一种固件升级方法、系统、装置及可读存储介质
CN112099879B (zh) 配置信息管理方法、装置、计算机设备及存储介质
CN114816772A (zh) 基于兼容层运行的应用的排错方法、排错系统及计算设备
CN114553859A (zh) 一种bmc配置管理方法、装置、电子设备及存储介质
CN112559346A (zh) 一种业务测试的方法及装置
CN115964075B (zh) 应用导出导入方法、装置、计算机设备及存储介质
CN115952172B (zh) 一种基于数据库临时表的数据匹配方法及装置
CN110442471B (zh) 一种检测网络系统中内存信息的方法、设备和介质
CN116186046B (zh) 设备数据的修改方法、装置、计算机设备及存储介质
US20230161664A1 (en) Method of responding to operation, electronic device, and storage medium

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
GR01 Patent grant
GR01 Patent grant