CN110609766A - 一种基于Redis协议的KV数据存储方法及装置 - Google Patents

一种基于Redis协议的KV数据存储方法及装置 Download PDF

Info

Publication number
CN110609766A
CN110609766A CN201910830696.3A CN201910830696A CN110609766A CN 110609766 A CN110609766 A CN 110609766A CN 201910830696 A CN201910830696 A CN 201910830696A CN 110609766 A CN110609766 A CN 110609766A
Authority
CN
China
Prior art keywords
keyword
data
protocol data
obtaining
value
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
CN201910830696.3A
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910830696.3A priority Critical patent/CN110609766A/zh
Publication of CN110609766A publication Critical patent/CN110609766A/zh
Priority to PCT/CN2020/110076 priority patent/WO2021042993A1/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

本发明提供一种基于Redis协议的KV数据存储方法及装置,获取Redis协议数据,获取Redis协议数据的第一关键字和第一关键字对应的数据;根据第一关键字对应的数据的数据类型,获取数据类型对应的预设标识符号;基于第一关键字和预设标识符号得到第二关键字;根据第二关键字和第一关键字对应的数据得到KV协议数据;将KV协议数据发送至KV数据库进行存储。基于该方案,由于KV数据库可以保证应用KV协议数据的主从节点之间的数据一致性,本方案将获取到的Redis协议数据转换为KV协议数据,并发送至KV数据库进行存储,因而有助于保证应用Redis协议数据的主从节点之间的数据强一致性。

Description

一种基于Redis协议的KV数据存储方法及装置
技术领域
本发明涉及金融科技(Fintech)的分布式存储领域,尤其涉及一种基于Redis协议的KV数据存储方法及装置。
背景技术
随着计算机的普及和信息技术的进步,特别是企业计算机网络的飞速发展,企业信息安全的重要性日趋明显,因而对作为企业信息安全的一项重要内容的数据备份提出了严格的要求。目前为各企业广泛使用的一种分布式存储数据库——Redis数据库,通过采用主从复制模式,即当一个或多个从节点连接上主节点时,主节点会将数据复制到一个或多个从节点上,从而实现对数据的多个备份。这些备份数据可以很大程度提高Redis服务的读性能,同时也是保证Redis服务高可用和分布式的基础。
然而,在Redis数据库中,基于Redis协议的数据在进行数据备份时,主节点到多个从节点的数据复制过程是异步进行的。这种异步复制的方式可能会出现主从节点数据不一致的情况,从而不能保证较强的数据一致性。例如,在长时间断网或者主节点宕机时,Redis数据库就会选举某个从节点作为新的主节点,但原主节点还未及时将最新数据发送至该新的主节点进行备份,从而导致该新的主节点中的数据不完整。
发明内容
本发明提供一种基于Redis协议的KV数据存储方法及装置,用以解决基于Redis数据库进行备份的数据不一致的问题。
第一方面,本发明实施例提供一种基于Redis协议的KV数据存储方法,该方法包括:获取Redis协议数据,获取所述Redis协议数据的第一关键字和所述第一关键字对应的数据,其中,所述第一关键字对应的数据的数据类型为预设类型;根据所述第一关键字对应的数据的数据类型,获取所述数据类型对应的预设标识符号;基于所述第一关键字和所述预设标识符号,得到第二关键字;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,所述预设标识符号用于指示所述KV协议数据的数据类型与第一关键字对应的数据的数据类型一致;将所述KV协议数据发送至KV数据库进行存储。
基于该方案,由于KV数据库可以保证应用KV协议数据的主从节点之间的数据一致性,本方案将获取到的Redis协议数据转换为KV协议数据,并发送至KV数据库进行存储,因而有助于保证应用Redis协议数据的主从节点之间的数据强一致性。
在一种可能的实现的方法中,若所述预设类型为字符串,则所述第一关键字对应的数据包括第一取值,所述预设标识符号为字符串对应的第一标识字符;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,包括:根据所述第二关键字和所述第一取值,得到所述KV协议数据。
在一种可能的实现方法中,若所述预设类型为哈希或集合,则所述第一关键字对应的数据包括第二取值,所述预设标识符号为哈希对应的第二标识字符、或为集合对应的第三标识字符,所述第二关键字包括元数据关键字和实际数据关键字;所述基于所述第一关键字和所述预设标识符号,得到第二关键字的步骤包括:基于所述第一关键字和所述预设标识符号,得到所述元数据关键字;基于所述第一关键字和所述预设标识符号,得到所述实际数据关键字;所述方法还包括:根据所述第一关键字对应的元素的个数,确定所述元数据关键字对应的数据包括第三取值;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,包括:根据所述第二关键字、所述第二取值和所述第三取值,得到所述KV协议数据,所述第二取值对应所述实际数据关键字。
在一种可能的实现方法中,若所述预设类型为列表,则所述第一关键字对应的数据包括第四取值,所述预设标识符号为列表对应的第四标识字符,所述第二关键字包括元数据关键字和实际数据关键字;所述基于所述第一关键字和所述预设标识符号,得到第二关键字的步骤包括:基于所述第一关键字和所述第四标识字符,得到所述元数据关键字;基于所述第一关键字和所述第四标识字符,得到所述实际数据关键字;所述方法还包括:根据所述第一关键字对应的元素的个数和所述元素的排序,确定所述元数据关键字对应的数据包括第五取值;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,包括:根据所述第二关键字、所述第四取值和所述第五取值,得到所述KV协议数据,所述第四取值对应所述实际数据关键字。
基于上述三种方案,由于KV数据库可以保证应用KV协议数据的主从节点之间的数据一致性,上述三种方案将获取到的多种数据类型的Redis协议数据转换为对应数据类型的KV协议数据,并发送至KV数据库进行存储,因而有助于保证应用上述三种方案中多种数据类型的Redis协议数据的主从节点之间的数据强一致性,并且实现了多种数据类型的转换和存储,提高了数据存储的灵活性和多样性。
在一种可能的实现方法中,接收客户端发送的请求消息;获取所述请求消息对应的第一KV协议数据;将所述第一KV协议数据转换为第一Redis协议数据;向所述客户端发送所述第一Redis协议数据。
本发明实施例中,可以实现基于客户端的请求,将存储的KV协议数据转换为Redis协议数据后发送至客户端。
第二方面,本发明实施例提供一种基于Redis协议的KV数据存储装置,该装置包括:第一获取单元,用于获取Redis协议数据,获取所述Redis协议数据的第一关键字和所述第一关键字对应的数据,其中,所述第一关键字对应的数据的数据类型为预设类型;第二获取单元,用于根据所述第一关键字对应的数据的数据类型,获取所述数据类型对应的预设标识符号;转换单元,基于所述第一关键字和所述预设标识符号,得到第二关键字;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,所述预设标识符号用于指示所述KV协议数据的数据类型与第一关键字对应的数据的数据类型一致;通信单元,用于将所述KV协议数据发送至KV数据库进行存储。
基于该方案,由于KV数据库可以保证应用KV协议数据的主从节点之间的数据一致性,本方案将获取到的Redis协议数据转换为KV协议数据,并发送至KV数据库进行存储,因而有助于保证应用Redis协议数据的主从节点之间的数据强一致性。
在一种可能实现的方法中,若所述预设类型为字符串,则所述第一关键字对应的数据包括第一取值,所述预设标识符号为字符串对应的第一标识字符;所述转换单元,具体用于根据所述第二关键字和所述第一取值,得到所述KV协议数据。
在一种可能实现的方法中,若所述预设类型为哈希或集合,则所述第一关键字对应的数据包括第二取值,所述预设标识符号为哈希对应的第二标识字符、或为集合对应的第三标识字符,所述第二关键字包括元数据关键字和实际数据关键字;所述转换单元,具体用于:基于所述第一关键字和所述预设标识符号,得到所述元数据关键字;基于所述第一关键字和所述预设标识符号,得到所述实际数据关键字;根据所述第一关键字对应的元素的个数,确定所述元数据关键字对应的数据包括第三取值;根据所述第二关键字、所述第二取值和所述第三取值,得到所述KV协议数据,所述第二取值对应所述实际数据关键字。
在一种可能实现的方法中,若所述预设类型为列表,则所述第一关键字对应的数据包括第四取值,所述预设标识符号为列表对应的第四标识字符,所述第二关键字包括元数据关键字和实际数据关键字;所述转换单元,具体用于:基于所述第一关键字和所述第四标识字符,得到所述元数据关键字;基于所述第一关键字和所述第四标识字符,得到所述实际数据关键字;根据所述第一关键字对应的元素的个数和所述元素的排序,确定所述元数据关键字对应的数据包括第五取值;根据所述第二关键字、所述第四取值和所述第五取值,得到所述KV协议数据,所述第四取值对应所述实际数据关键字。
基于上述三种方案,由于KV数据库可以保证应用KV协议数据的主从节点之间的数据一致性,上述三种方案将获取到的多种数据类型的Redis协议数据转换为对应数据类型的KV协议数据,并发送至KV数据库进行存储,因而有助于保证应用上述三种方案中多种数据类型的Redis协议数据的主从节点之间的数据强一致性,并且实现了多种数据类型的转换和存储,提高了数据存储的灵活性和多样性。
在一种可能实现的方法中,所述通信单元,还用于接收客户端发送的请求消息;所述第一获取单元,还用于获取所述请求消息对应的第一KV协议数据;所述转换单元,还用于将所述第一KV协议数据转换为第一Redis协议数据;所述通信单元,还用于向所述客户端发送所述第一Redis协议数据。
基于该方案,可以实现基于客户端的请求,将存储的KV协议数据转换为Redis协议数据后发送至客户端。
第三方面,本发明实施例提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如上述任一项所述的方法。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上述任一项所述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可能的系统架构;
图2为本发明实施例提供的一种基于Redis协议的KV数据存储方法;
图3为本发明实施例提供的一种调用以KV编码格式进行存储的Redis协议数据的方法;
图4为本发明实施例提供的一种基于Redis协议的KV数据存储装置。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,为本发明实施例一种可能的系统架构,基于该系统架构可实现对基于Redis协议的KV数据存储。该架构包括数据存储装置102和数据库103。可选地,该架构还可以包括客户端101。
其中,数据存储装置102用于将Redis协议数据转换为KV协议数据,并将KV协议数据发送至数据库103进行存储;以及,用于基于客户端101的请求,从数据库103获取KV协议数据并将该KV协议数据转换为Redis协议数据,然后将Redis协议数据发送至客户端101。
数据库103,用于存储基于KV协议的数据。
客户端101,用于向数据存储装置102发送请求消息,以请求获取Redis协议数据,并接收来自于数据存储装置102的Redis协议数据。
基于图1中的系统架构,本发明实施例提供了一种基于Redis协议的KV数据存储方法,该方法可由图1中的数据存储装置102执行,如图2所示,该方法包括以下步骤:
步骤201,获取Redis协议数据,获取所述Redis协议数据的第一关键字和所述第一关键字对应的数据,其中,所述第一关键字对应的数据的数据类型为预设类型。
Redis协议数据的数据类型包括但不限于以下四种:字符串(String)、哈希(Hash)、集合(Set)、列表(List)。其中,Redis协议数据均可以通过Key-Value值来表示。
步骤202,根据所述第一关键字对应的数据的数据类型,获取所述数据类型对应的预设标识符号。
步骤203,基于所述第一关键字和所述预设标识符号,得到第二关键字;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,所述预设标识符号用于指示所述KV协议数据的数据类型与所述第一关键字对应的数据的数据类型一致。
KV协议数据的数据类型包括但不限于以下四种:字符串(String)、哈希(Hash)、集合(Set)、列表(List)。其中,KV协议数据均可以通过Key-Value值来表示。
将Redis协议数据转换为KV协议数据时,若Redis协议数据的数据类型为字符串,则转换后的KV协议数据的数据类型也为字符串;若Redis协议数据的数据类型为哈希,则转换后的KV协议数据的数据类型也为哈希;若Redis协议数据的数据类型为集合,则转换后的KV协议数据的数据类型也为集合;若Redis协议数据的数据类型为列表,则转换后的KV协议数据的数据类型也为列表。
对于Redis协议数据,String属于简单数据类型,因而在将数据类型为String的Redis协议数据转换为KV协议数据时,转换得到的KV协议数据包括一个数据项,即实际数据。Hash、Set和List属于复杂数据类型,因而在将数据类型为Hash、Set或List的Redis协议数据转换为KV协议数据时,转换得到的KV协议数据包括至少两个数据项,分别为元数据和实际数据,其中元数据主要记录Hash、Set或List这三类数据的额外信息,比如当数据类型为Hash、Set时,元数据信息包括数据容量(Size)、过期时间(Time to Live,TTL)、标志位(Flag)等;当数据类型为List时,元数据信息包括头部信息(Head)、尾部信息(Tail)、数据容量(Size)、过期时间(Time to Live,TTL)、标志位(Flag)等。
步骤204,将所述KV协议数据发送至KV数据库进行存储。
基于该方案,由于KV数据库可以保证应用KV协议数据的主从节点之间的数据一致性,本方案将获取到的Redis协议数据转换为KV协议数据,并发送至KV数据库进行存储,因而有助于保证应用Redis协议数据的主从节点之间的数据强一致性。从而,当Redis服务在长时间断网或者主节点宕机而造成主从节点数据不一致时,通过该方案有助于保证应用Redis协议数据的主从节点之间的数据一致性。
下面根据Redis协议数据的数据类型,给出将Redis协议数据转换为KV协议数据的具体实现方式。
情形一、Redis协议数据的数据类型为String,Redis协议数据包含第一关键字和第一取值。
下面结合一个示例进行说明。如表1所示,为Redis协议数据的数据类型为String时的信息的示例。一条String类型的Redis协议数据,包含的关键字(Key)为alice_account,取值(Value)为43000212333111110000。
其中,这里的关键字(alice_account)也称为第一关键字,这里的取值(43000212333111110000)也称为第一取值。
表1
如表2所示,为对表1所示的Redis协议数据进行转换得到的KV协议数据。
表2
参考表2,其中,第二关键字为1alice_account,该关键字1alice_account也可以称为实际数据关键字。第二关键字1alice_account是根据第一关键字alice_account和第一标识字符“1”得到的,即在第一关键字alice_account之前添加第一标识字符“1”,得到第二关键字1alice_account,第一标识字符“1”用于指示该KV协议数据的数据类型与第一关键字alice_account对应的数据的数据类型一致,均为String。
该第二关键字对应的取值为43000212333111110000,即第二关键字对应的取值与第一关键字对应的取值相同,均为第一取值。
情形二、Redis协议数据的数据类型为Hash,Redis协议数据包含第一关键字和第二取值。
下面结合一个示例进行说明。如表3所示,为Redis协议数据的数据类型为Hash时的信息的示例。一条Hash类型的Redis协议数据,包含的关键字(Key)为alice,取值(Key)分别为name(爱丽丝)、age(18)、country(中国)和birthday(2000/1/1)。
其中,这里的关键字(alice)也称为第一关键字,这里的取值(name(爱丽丝)、age(18)、country(中国)和birthday(2000/1/1))也称为第二取值。
表3
如表4所示,为对表3所示的Redis协议数据进行转换得到的KV协议数据。
表4
参考表4,其中,第二关键字为2alice、25alicename、25aliceage、25alicecountry和25alicebirthday。其中,2alice为元数据关键字,25alicename、25aliceage、25alicecountry和25alicebirthday均为实际数据关键字。
针对第二关键字2alice,即在第二关键字的元数据关键字中,其中的“2”为第二标识字符,用于指示该KV协议数据的数据类型与第一关键字alice对应的数据的数据类型一致,均为Hash。具体地,在第一关键字alice之前添加第二标识字符“2”,得到第二关键字2alice。该第二关键字对应的取值包括4201908081,其中,4201908081中的第一位数字“4”表示第一关键字对应的元素的个数为4,也即表示转换后得到的KV协议数据中的实际数据关键字对应的元素的个数为4,该数字“4”也可以称为第三取值,第三取值作为元数据关键字对应的数据;中间8位数字20190808表示TTL,最后一位数字“1”表示Flag,通常Flag预先定义,如“1”表示有效,“0”表示过期。
针对第二关键字25alicename,即在第二关键字的实际数据关键字中,包括第一关键字alice,还包括第二取值name(爱丽丝)中的name;其中,25alicename中的第一位数字“2”为第二标识字符,用于指示该KV协议数据的数据类型与第一关键字alice对应的数据的数据类型一致,均为Hash;25alicename中的第二位数字“5”用于表示第一关键字alice的字符串长度是5个字符。即该第二关键字25alicename是根据第一关键字alice、第一关键字对应的第二取值中的name、第二标识符号“2”和第一关键字alice的字符串长度确定的。
针对其他第二关键字25aliceage、25alicecountry和25alicebirthday,其中各元素的含义,可以参考第二关键字25alicename的解释,不再赘述。
上述第二关键字25alicename、25aliceage、25alicecountry和25alicebirthday对应的取值包括第二取值的一部分,分别为爱丽丝、19、中国和2000/1/1。
情形三、Redis协议数据的数据类型为Set,Redis协议数据包含第一关键字和第二取值。
下面结合一个示例进行说明。如表5所示,为Redis协议数据的数据类型为Set时的信息的示例。一条Set类型的Redis协议数据,包含的关键字(Key)为favorite_fruits,取值(Value)分别为apple、banana、和pear。
其中,这里的关键字(favorite_fruits)也称为第一关键字,这里的取值(apple、banana、pear)也称为第二取值。
表5
如表6所示,为对表5所示的Redis协议数据进行转换得到的KV协议数据。
表6
参考表6,其中,第二关键字为3favorite_fruits、315favorite_fruitsapple、315favorite_fruitsbanana和315favorite_fruitspear。其中,3favorite_fruits为元数据关键字,315favorite_fruitsapple、315favorite_fruitsbanana和315favorite_fruitspear均为实际数据关键字。
针对第二关键字3favorite_fruits,即在第二关键字的元数据关键字中,其中的“3”为第三标识字符,用于指示该KV协议数据的数据类型与第一关键字favorite_fruits对应的数据的数据类型一致,均为Set。具体地,在第一关键字favorite_fruits之前添加第三标识字符“3”,得到第二关键字3favorite_fruits。该第二关键字对应的取值包括3201908081,其中,3201908081中的第一位数字“3”表示第一关键字对应的元素的个数为3,也即表示转换后得到的KV协议数据中的实际数据关键字对应的元素的个数为3,该数字“3”也可以称为第三取值,第三取值作为元数据关键字对应的数据;中间8位数字20190808表示TTL,最后一位数字“1”表示Flag,通常Flag预先定义,如“1”表示有效,“0”表示过期。
针对第二关键字315favorite_fruitsapple,即在第二关键字的实际数据关键字中,包括第一关键字favorite_fruits,还包括第二取值apple;其中,315favorite_fruitsapple中的第一位数字“3”为第三标识字符,用于指示该KV协议数据的数据类型与第一关键字favorite_fruits对应的数据的数据类型一致,均为Set;315favorite_fruitsapple中的第二和第三位数字合起来的数字“15”用于表示第一关键字favorite_fruits的字符串长度是15个字符。即该第二关键字315favorite_fruitsapple是根据第一关键字favorite_fruits、第一关键字对应的第二取值apple、第三标识字符“3”和第一关键字favorite_fruits的字符串长度确定的。
针对其他第二关键字315favorite_fruitsbanana和315favorite_fruitspear,其中各元素的含义,可以参考第二关键字315favorite_fruitsapple的解释,不再赘述。
上述第二关键字315favorite_fruitsapple、315favorite_fruitsbanana和315favorite_fruitspear对应的取值包括第二取值,分别为apple、banana和pear。
情形四、Redis协议数据的数据类型为List,Redis协议数据包含第一关键字和第四取值。
下面结合一个示例进行说明。如表7所示,为Redis协议数据的数据类型为List时的信息的示例。一条List类型的Redis协议数据,包含的关键字(Key)为students_class_one,取值(Value)分别为Grace、David、Peter、Daniel和Mary。
其中,这里的关键字(students_class_one)也称为第一关键字,这里的取值(Grace、David、Peter、Daniel、Mary)也称为第四取值。
表7
如表8所示,为对表7所示的Redis协议数据进行转换得到的KV协议数据。
表8
参考表8,其中,第二关键字为4students_class_one、418students_class_one1、418students_class_one2、418students_class_one3、418students_class_one4和418students_class_one5。其中,4students_class_one为元数据关键字,418students_class_one1、418students_class_one2、418students_class_one3、418students_class_one4和418students_class_one5均为实际数据关键字。
针对第二关键字4students_class_one,即在第二关键字的元数据关键字中,其中的“4”为第四标识字符,用于指示该KV协议数据的数据类型与第一关键字students_class_one对应的数据的数据类型一致,均为List。具体地,在第一关键字students_class_one之前添加第四标识字符“4”,得到第二关键字4students_class_one。该第二关键字对应的取值包括155201908081,其中,155201908081中的第一位数字“1”表示第一关键字对应的元素的排序从“1”开始,第二位数字“5”表示第一关键字对应的元素的排序到“5”结束,第三位数字“5”表示第一关键字对应的元素的个数为5,也即表示转换后得到的KV协议数据中的实际数据关键字对应的元素的个数为5,第一位数字“1”、第二位数字“5”和第三位数字“5”合起来的数字“155”也可以称为第五取值,第五取值作为元数据关键字对应的数据;中间8位数字20190808表示TTL,最后一位数字“1”表示Flag,通常Flag预先定义,如“1”表示有效,“0”表示过期。
针对第二关键字418students_class_one1,即在第二关键字的实际数据关键字中,包括第一关键字students_class_one;其中,418students_class_one1中的第一位数字“4”为第四标识字符,用于指示该KV协议数据的数据类型与第一关键字students_class_one对应的数据的数据类型一致,均为List;418students_class_one1中的第二和第三位数字合起来的数字“18”用于表示第一关键字students_class_one的字符串长度是18个字符,418students_class_one1中的最后一位数字“1”用于表示第一关键字对应的第四取值Grace的排序为1。即该第二关键字418students_class_one1是根据第一关键字students_class_one、第一关键字对应的第四取值Grace的排序、第四标识符号“4”和第一关键字students_class_one的字符串长度确定的。
针对其他第二关键字418students_class_one2、418students_class_one3、418students_class_one4和418students_class_one5,其中各元素的含义,可以参考第二关键字418students_class_one1的解释,不再赘述。
上述第二关键字418students_class_one1、418students_class_one2、418students_class_one3、418students_class_one4和418students_class_one5对应的取值包括第四取值,分别为Grace、David、Peter、Daniel和Mary。
需要说明的是,上述示例中,String数据类型的KV协议数据中的第一标识字符为“1”,Hash数据类型的KV协议数据中的第二标识字符为“2”,Set数据类型的KV协议数据中的第三标识字符为“3”,List数据类型的KV协议数据中的第四标识字符为“4”,在实际应用中,对于不同数据类型的KV协议数据中的预设标识符号的定义也可以采用其他方式,可根据实际需要而定。比如,上述示例也可以采用以下方式:String数据类型、Set数据类型、List数据类型和Hash数据类型的KV协议数据中的预设标识符号分别为“1”、“2”、“3”、“4”等等。
需要说明的是,预设标识符号可以位于第二关键字的首位,也可以位于第二关键字的末位,或者也还可以是其他位置,对此本发明不做限定。
本发明实施例中,还提供了一种调用以KV编码格式进行存储的Redis协议数据的方法。如图3所示,该方法包括以下步骤:
步骤301,从客户端接收请求消息;
步骤302,获取所述请求消息对应的第一KV协议数据;
步骤303,将所述第一KV协议数据转换为第一Redis协议数据;
步骤304,向所述客户端发送所述第一Redis协议数据。
基于该方案,可以实现基于客户端的请求,将存储的KV协议数据转换为Redis协议数据后发送至客户端。
基于同样的构思,本发明实施例还提供一种基于Redis协议的KV数据存储装置,如图4所示,所述装置包括:
第一获取单元401,用于获取Redis协议数据,获取所述Redis协议数据的第一关键字和所述第一关键字对应的数据,其中,所述第一关键字对应的数据的数据类型为预设类型;
第二获取单元402,用于根据所述第一关键字对应的数据的数据类型,获取所述数据类型对应的预设标识符号;
转换单元403,基于所述第一关键字和所述预设标识符号,得到第二关键字;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,所述预设标识符号用于指示所述KV协议数据的数据类型与所述第一关键字对应的数据的数据类型一致;
通信单元404,用于将所述KV协议数据发送至KV数据库进行存储。
进一步地,对于所述装置,若所述预设类型为字符串,则所述第一关键字对应的数据包括第一取值,所述预设标识符号为字符串对应的第一标识字符;所述转换单元403具体用于:根据所述第二关键字和所述第一取值,得到所述KV协议数据。
进一步地,对于所述装置,若所述预设类型为哈希或集合,则所述第一关键字对应的数据包括第二取值,所述预设标识符号为哈希对应的第二标识字符、或为集合对应的第三标识字符,所述第二关键字包括元数据关键字和实际数据关键字;所述转换单元403具体用于:基于所述第一关键字和所述预设标识符号,得到所述元数据关键字;基于所述第一关键字和所述预设标识符号,得到所述实际数据关键字;根据所述第一关键字对应的元素的个数,确定所述元数据关键字对应的数据包括第三取值;根据所述第二关键字、所述第二取值和所述第三取值,得到所述KV协议数据,所述第二取值对应所述实际数据关键字。
进一步地,对于所述装置,若所述预设类型为列表,则所述第一关键字对应的数据包括第四取值,所述预设标识符号为列表对应的第四标识字符,所述第二关键字包括元数据关键字和实际数据关键字;所述转换单元403具体用于:基于所述第一关键字和所述第四标识字符,得到所述元数据关键字;基于所述第一关键字和所述第四标识字符,得到所述实际数据关键字;根据所述第一关键字对应的元素的个数和所述元素的排序,确定所述元数据关键字对应的数据包括第五取值;根据所述第二关键字、所述第四取值和所述第五取值,得到所述KV协议数据,所述第四取值对应所述实际数据关键字。
进一步地,对于所述装置,所述通信单元404,还用于从客户端接收请求消息;
所述第一获取单元401,还用于获取所述请求消息对应的第一KV协议数据;
所述转换单元403,还用于将所述第一KV协议数据转换为第一Redis协议数据;
所述通信单元404,还用于向所述客户端发送所述第一Redis协议数据。
本发明实施例提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器,可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于基于Redis协议的KV数据存储方法的程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行基于Redis协议的KV数据存储方法。
本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行基于Redis协议的KV数据存储方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种基于Redis协议的KV数据存储方法,其特征在于,包括:
获取Redis协议数据,获取所述Redis协议数据的第一关键字和所述第一关键字对应的数据,其中,所述第一关键字对应的数据的数据类型为预设类型;
根据所述第一关键字对应的数据的数据类型,获取所述数据类型对应的预设标识符号;
基于所述第一关键字和所述预设标识符号,得到第二关键字;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,所述预设标识符号用于指示所述KV协议数据的数据类型与所述第一关键字对应的数据的数据类型一致;
将所述KV协议数据发送至KV数据库进行存储。
2.如权利要求1所述的方法,其特征在于,若所述预设类型为字符串,则所述第一关键字对应的数据包括第一取值,所述预设标识符号为字符串对应的第一标识字符;
根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,包括:
根据所述第二关键字和所述第一取值,得到所述KV协议数据。
3.如权利要求1所述的方法,其特征在于,若所述预设类型为哈希或集合,则所述第一关键字对应的数据包括第二取值,所述预设标识符号为哈希对应的第二标识字符、或为集合对应的第三标识字符,所述第二关键字包括元数据关键字和实际数据关键字;
所述基于所述第一关键字和所述预设标识符号,得到第二关键字的步骤包括:
基于所述第一关键字和所述预设标识符号,得到所述元数据关键字;
基于所述第一关键字和所述预设标识符号,得到所述实际数据关键字;
所述方法还包括:
根据所述第一关键字对应的元素的个数,确定所述元数据关键字对应的数据包括第三取值;
根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,包括:
根据所述第二关键字、所述第二取值和所述第三取值,得到所述KV协议数据,所述第二取值对应所述实际数据关键字。
4.如权利要求1所述的方法,其特征在于,若所述预设类型为列表,则所述第一关键字对应的数据包括第四取值,所述预设标识符号为列表对应的第四标识字符,所述第二关键字包括元数据关键字和实际数据关键字;
所述基于所述第一关键字和所述预设标识符号,得到第二关键字的步骤包括:
基于所述第一关键字和所述第四标识字符,得到所述元数据关键字;
基于所述第一关键字和所述第四标识字符,得到所述实际数据关键字;
所述方法还包括:
根据所述第一关键字对应的元素的个数和所述元素的排序,确定所述元数据关键字对应的数据包括第五取值;
根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,包括:
根据所述第二关键字、所述第四取值和所述第五取值,得到所述KV协议数据,所述第四取值对应所述实际数据关键字。
5.如权利要求1-4任一所述的方法,其特征在于,还包括:
接收客户端发送的请求消息;
获取所述请求消息对应的第一KV协议数据;
将所述第一KV协议数据转换为第一Redis协议数据;
向所述客户端发送所述第一Redis协议数据。
6.一种基于Redis协议的KV数据存储装置,其特征在于,包括:
第一获取单元,用于获取Redis协议数据,获取所述Redis协议数据的第一关键字和所述第一关键字对应的数据,其中,所述第一关键字对应的数据的数据类型为预设类型;
第二获取单元,用于根据所述第一关键字对应的数据的数据类型,获取所述数据类型对应的预设标识符号;
转换单元,基于所述第一关键字和所述预设标识符号,得到第二关键字;根据所述第二关键字和所述第一关键字对应的数据,得到KV协议数据,所述预设标识符号用于指示所述KV协议数据的数据类型与所述第一关键字对应的数据的数据类型一致;
通信单元,用于将所述KV协议数据发送至KV数据库进行存储。
7.如权利要求6所述的装置,其特征在于,若所述预设类型为字符串,则所述第一关键字对应的数据包括第一取值,所述预设标识符号为字符串对应的第一标识字符;
所述转换单元,具体用于根据所述第二关键字和所述第一取值,得到所述KV协议数据。
8.如权利要求6所述的装置,其特征在于,若所述预设类型为哈希或集合,则所述第一关键字对应的数据包括第二取值,所述预设标识符号为哈希对应的第二标识字符、或为集合对应的第三标识字符,所述第二关键字包括元数据关键字和实际数据关键字;
所述转换单元,具体用于:基于所述第一关键字和所述预设标识符号,得到所述元数据关键字;基于所述第一关键字和所述预设标识符号,得到所述实际数据关键字;根据所述第一关键字对应的元素的个数,确定所述元数据关键字对应的数据包括第三取值;根据所述第二关键字、所述第二取值和所述第三取值,得到所述KV协议数据,所述第二取值对应所述实际数据关键字。
9.如权利要求6所述的装置,其特征在于,若所述预设类型为列表,则所述第一关键字对应的数据包括第四取值,所述预设标识符号为列表对应的第四标识字符,所述第二关键字包括元数据关键字和实际数据关键字;
所述转换单元,具体用于:基于所述第一关键字和所述第四标识字符,得到所述元数据关键字;基于所述第一关键字和所述第四标识字符,得到所述实际数据关键字;根据所述第一关键字对应的元素的个数和所述元素的排序,确定所述元数据关键字对应的数据包括第五取值;根据所述第二关键字、所述第四取值和所述第五取值,得到所述KV协议数据,所述第四取值对应所述实际数据关键字。
10.如权利要求6-9任一所述的装置,其特征在于,所述通信单元,还用于接收客户端发送的请求消息;
所述第一获取单元,还用于获取所述请求消息对应的第一KV协议数据;
所述转换单元,还用于将所述第一KV协议数据转换为第一Redis协议数据;
所述通信单元,还用于向所述客户端发送所述第一Redis协议数据。
11.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至5任一项所述的方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1至5任一项所述的方法。
CN201910830696.3A 2019-09-04 2019-09-04 一种基于Redis协议的KV数据存储方法及装置 Pending CN110609766A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910830696.3A CN110609766A (zh) 2019-09-04 2019-09-04 一种基于Redis协议的KV数据存储方法及装置
PCT/CN2020/110076 WO2021042993A1 (zh) 2019-09-04 2020-08-19 一种基于Redis协议的KV数据存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910830696.3A CN110609766A (zh) 2019-09-04 2019-09-04 一种基于Redis协议的KV数据存储方法及装置

Publications (1)

Publication Number Publication Date
CN110609766A true CN110609766A (zh) 2019-12-24

Family

ID=68892171

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910830696.3A Pending CN110609766A (zh) 2019-09-04 2019-09-04 一种基于Redis协议的KV数据存储方法及装置

Country Status (2)

Country Link
CN (1) CN110609766A (zh)
WO (1) WO2021042993A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021042993A1 (zh) * 2019-09-04 2021-03-11 深圳前海微众银行股份有限公司 一种基于Redis协议的KV数据存储方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2631817A1 (en) * 2012-02-23 2013-08-28 Fujitsu Limited Database, apparatus, and method for storing encoded triples
CN105302889B (zh) * 2015-10-16 2019-06-04 北京奇虎科技有限公司 数据存储结构的转换方法及装置
CN109408507B (zh) * 2018-09-27 2021-07-27 中国联合网络通信集团有限公司 多属性数据的处理方法、装置、设备及可读存储介质
CN110609766A (zh) * 2019-09-04 2019-12-24 深圳前海微众银行股份有限公司 一种基于Redis协议的KV数据存储方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021042993A1 (zh) * 2019-09-04 2021-03-11 深圳前海微众银行股份有限公司 一种基于Redis协议的KV数据存储方法及装置

Also Published As

Publication number Publication date
WO2021042993A1 (zh) 2021-03-11

Similar Documents

Publication Publication Date Title
KR102277289B1 (ko) 블록체인 월드 스테이트 머클 패트리샤 트리 서브트리 구성
WO2021115021A1 (zh) 数据处理方法、装置、终端设备及计算机可读存储介质
CN108846753B (zh) 用于处理数据的方法和装置
US8301650B1 (en) Bloom filter compaction
CN111177302B (zh) 业务单据处理方法、装置、计算机设备和存储介质
CN107977396B (zh) 一种KeyValue数据库的数据表的更新方法与表数据更新装置
CA2871036A1 (en) Entity resolution from documents
US8838550B1 (en) Readable text-based compression of resource identifiers
WO2022082891A1 (zh) 大数据采集方法、系统、计算机设备及其存储介质
CN111611249A (zh) 数据管理方法、装置、设备及存储介质
CN111061680A (zh) 一种数据检索的方法和装置
CN114818000A (zh) 隐私保护的集合混淆求交方法、系统及相关设备
CN110609766A (zh) 一种基于Redis协议的KV数据存储方法及装置
WO2023061180A1 (zh) 基于多频率的数据发送和接收方法、装置和设备
CN116383246A (zh) 联合查询方法以及装置
WO2019214071A1 (zh) 区块链上用户通信方法、装置、终端设备及存储介质
CN112073395B (zh) 一种文件分发方法和装置
CN110705935B (zh) 一种物流单据的处理方法和装置
CN112711683A (zh) 数据比对方法、装置及计算机设备
CN112530522A (zh) 序列纠错方法、装置、设备和存储介质
CN112035471A (zh) 一种事务处理方法及计算机设备
CN111858586A (zh) 一种数据处理的方法和装置
CN111866134A (zh) 区块链交易哈希值和地址的生成方法、系统及存储介质
CN111723007A (zh) 一种测试用例的合并方法、系统、设备以及介质
CN107203578B (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