一种Redis集群的分片存储方法、装置、设备及存储介质与流程

未命名 10-08 阅读:98 评论:0

一种redis集群的分片存储方法、装置、设备及存储介质
技术领域
1.本技术属于大数据技术领域和金融产险领域,具体涉及一种redis集群的分片存储方法、装置、设备及存储介质。


背景技术:

2.redis集群位图(bitmap)存储方案是指使用redis作为存储引擎,利用其字符串数据类型实现的一种位图存储方案,在该方案中,每个位(bit)用于表示某种状态或标识,适用于处理海量整型数据,例如,在金融产险产品系统中,统计用户否登录过该系统的数据,可以使用redis集群bitmap存储方案来实现。
3.但在目前的redis集群bitmap存储方案中,通常将数据顺序存储在一个redis节点中,使用这种存储方案存储大量数据时,如果某个数据的偏移标识较大,就需要占用大量内存,产生较大的偏移值,导致内存浪费严重,并且所有的数据都集中存储在一个节点上,容易导致节点负载不均,容错性较弱,影响系统的性能和扩展能力。


技术实现要素:

4.本技术实施例的目的在于提出一种redis集群的分片存储方法、装置、计算机设备及存储介质,以解决当前redis集群bitmap存储方案存在的内存浪费、负载不均、容错性较弱、影响系统的性能和扩展能力的技术问题。
5.为了解决上述技术问题,本技术实施例提供一种redis集群的分片存储方法,采用了如下所述的技术方案:
6.一种redis集群的分片存储方法,包括:
7.接收数据存储指令,获取数据存储指令对应的待存储数据;
8.对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值;
9.对第一哈希值进行划分,得到第一哈希片段和第二哈希片段;
10.基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位;
11.确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值;
12.根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。
13.进一步地,存储状态包括第一存储状态和第二存储状态,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态,具体包括:
14.生成数据偏移指针,基于第一数据偏移值使用数据偏移指针遍历第一哈希槽位;
15.根据数据偏移指针的遍历结果确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置;
16.将第一存储位图位置的存储状态从第一存储状态变更为第二存储状态。
17.进一步地,在根据第一哈希槽位和第一数据偏移值确定待存储数据位图位置,并变更位图位置的存储状态之后,还包括:
18.接收数据查询指令,获取数据查询指令对应的待查询数据;
19.对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值;
20.对第二哈希值进行划分,得到第三哈希片段和第四哈希片段;
21.基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位;
22.确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值;
23.根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,得到第二存储位图位置;
24.检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。
25.进一步地,检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储,具体包括:
26.若第二存储位图位置的存储状态为第一存储状态,则确定待查询数据未完成位图存储;
27.基于第一存储状态生成第一数据查询结果,并输出第一数据查询结果;
28.若第二存储位图位置的存储状态为第二存储状态,则确定待查询数据已完成位图存储;
29.基于第二存储状态生成第二数据查询结果,并输出第二数据查询结果。
30.进一步地,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,具体包括:
31.确定redis集群中哈希槽位的索引长度;
32.基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段;
33.基于第一哈希片段对第一哈希值进行掩码运算,得到第二哈希片段。
34.进一步地,基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段,具体包括:
35.确定第一哈希值的起始位;
36.从第一哈希值的起始位开始,对第一哈希值进行逐位右移操作,直至右移长度等于哈希槽位的索引长度为止,得到第一哈希片段。
37.为了解决上述技术问题,本技术实施例还提供一种redis集群的分片存储装置,采用了如下所述的技术方案:
38.一种redis集群的分片存储装置,包括:
39.存储指令接收模块,用于接收数据存储指令,获取数据存储指令对应的待存储数据;
40.第一哈希运算模块,用于对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值;
41.第一哈希划分模块,用于对第一哈希值进行划分,得到第一哈希片段和第二哈希片段;
42.第一槽位索引模块,用于基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位;
43.第一数据偏移模块,用于确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值;
44.数据位图存储模块,用于根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。
45.进一步地,redis集群的分片存储装置还包括:
46.查询指令接收模块,用于接收数据查询指令,获取数据查询指令对应的待查询数据;
47.第二哈希运算模块,用于对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值;
48.第二哈希划分模块,用于对第二哈希值进行划分,得到第三哈希片段和第四哈希片段;
49.第二槽位索引模块,用于基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位;
50.第二数据偏移模块,用于确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值;
51.位图数据查询模块,用于根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,得到第二存储位图位置;
52.存储状态检测模块,用于检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。
53.为了解决上述技术问题,本技术实施例还提供一种计算机设备,采用了如下所述的技术方案:
54.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上述任一项所述的redis集群的分片存储方法的步骤。
55.为了解决上述技术问题,本技术实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
56.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上述中任一项所述的redis集群的分片存储方法的步骤。
57.与现有技术相比,本技术实施例主要有以下有益效果:
58.本技术公开一种redis集群的分片存储方法、装置、设备及存储介质,属于大数据技术领域和金融产险领域。本技术通过接收数据存储指令,获取数据存储指令对应的待存储数据,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值,根据第一哈希槽位和第一数据偏移值确定待存储数据
在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。
附图说明
59.为了更清楚地说明本技术中的方案,下面将对本技术实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
60.图1示出了本技术可以应用于其中的示例性系统架构图;
61.图2示出了根据本技术的redis集群的分片存储方法的一个实施例的流程图;
62.图3示出了根据本技术的redis集群的分片存储装置的一个实施例的结构示意图;
63.图4示出了根据本技术的计算机设备的一个实施例的结构示意图。
具体实施方式
64.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本技术的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
65.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
66.为了使本技术领域的人员更好地理解本技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。
67.如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
68.用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
69.终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面3)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面4)播放器、膝上型便携
计算机和台式计算机等等。
70.服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
71.需要说明的是,本技术实施例所提供的redis集群的分片存储方法一般由服务器执行,相应地,redis集群的分片存储装置一般设置于服务器中。
72.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
73.继续参考图2,示出了根据本技术的redis集群的分片存储方法的一个实施例的流程图。本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
74.人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
75.redis(remote dictionary server)是一个开源的内存数据存储系统,也可以被称为键值存储数据库、缓存和消息中间件。它以键值对(key-value)的形式存储数据,并将数据存储在内存中,以实现快速的数据访问和读写操作。redis支持多种数据结构,包括字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sorted set)等。每种数据结构都有对应的操作命令,可以进行数据的增删改查等操作。
76.redis集群位图(bitmap)存储方案是指使用redis作为存储引擎,利用其字符串数据类型实现的一种位图存储方案,在该方案中,每个位(bit)用于表示某种状态或标识,适用于处理海量整型数据,例如,在金融产险产品系统中,统计用户否登录过该系统的数据,可以使用redis集群bitmap存储方案来实现。
77.在目前的redis集群bitmap存储方案中,通常将数据顺序存储在一个redis节点中,无法实现负载均衡,所有的数据都集中存储在一个节点上,容易导致节点负载不均,影响系统的性能和扩展能力,还容易导致数据丢失或不可用。使用这种存储方案存储大量数据时,如果某个数据的偏移标识较大,就需要占用大量内存,产生较大的偏移值,导致内存浪费严重,并且所有的数据都集中存储在一个节点上,容易导致节点负载不均,容错性较弱,影响系统的性能和扩展能力。
78.为了解决上述技术问题,本技术公开一种redis集群的分片存储方法、装置、设备及存储介质,属于大数据技术领域和金融产险领域,本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产
生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。
79.在redis集群bitmap存储方案中,分片存储是指将数据按照某种规则或算法进行分割和分配到不同的redis节点上进行存储,这种分片存储的方式可以实现数据的分散存储和负载均衡,提高系统的可扩展性和并发处理能力。
80.具体来说,在本技术具体的实施例中,分片存储的过程如下:
81.使用hash算法对数据进行分片:对于每个要存储的数据,通过应用hash算法计算出一个哈希值,该哈希值可以是一个整数或者一个字符串,哈希算法通常是将输入数据映射为一个固定长度的哈希码。
82.根据哈希值选择存储节点:将哈希值映射到redis集群的哈希槽位(hash slot),哈希槽位是redis集群中用于分布数据的基本单位,通常是一个固定数量的槽位,如默认的65536个槽位,根据哈希值的高位或低位等方式,将数据映射到对应的槽位上。
83.将数据存储到相应的节点:根据哈希槽位的映射结果,将数据存储到对应的redis节点中。每个节点负责管理一部分哈希槽位,并维护相应的数据。
84.通过将数据分散到多个节点上,可以方便地增加或减少节点,以满足存储需求的变化。每个节点只需要管理一部分数据,减轻了单个节点的负载压力,提升了系统的性能和吞吐量,且由于数据被分散存储在多个节点上,当某个节点发生故障或不可用时,仍然可以从其他可用节点获取数据,提高了系统的可用性和容错能力。
85.所述的redis集群的分片存储方法,包括以下步骤:
86.s201,接收数据存储指令,获取数据存储指令对应的待存储数据。
87.在本实施例中,服务器接收到数据存储指令后,解析数据存储指令,根据数据存储指令从预设数据库中获取待存储数据,数据存储指令可能是来自于应用程序或者其他系统组件。
88.进一步地,存储状态包括第一存储状态和第二存储状态,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态,具体包括:
89.生成数据偏移指针,基于第一数据偏移值使用数据偏移指针遍历第一哈希槽位;
90.根据数据偏移指针的遍历结果确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置;
91.将第一存储位图位置的存储状态从第一存储状态变更为第二存储状态。
92.在本实施例中,数据偏移指针是用来指示待存储数据在节点中的具体存储位置的,它的值是根据第一数据偏移值计算出来的。将数据偏移值乘以节点中每个数据所占用的存储空间大小,得到最终的数据偏移指针,在redis中,每个数据都是按照固定大小进行存储的,因此可以通过乘以每个数据的大小来计算出数据偏移指针。例如,假设每个数据的大小为n字节,数据偏移值为m,则数据偏移指针的计算公式为:m*n。计算出的结果就是待存储数据在节点中的具体存储位置,可以用来遍历哈希槽位和确定存储位图位置。
93.遍历结果是指数据偏移指针在哈希槽位中的具体位置,根据这个位置可以确定待存储数据在节点中的存储位置,存储位图位置是用来记录节点存储状态的一种机制,它的值表示节点中某个位置的存储状态,例如,第一存储状态配置为“0”,第二存储状态配置为“1”,第一存储状态表示数据未存储,第二存储状态表示数据已存储。将第一存储位图位置
的存储状态从第一存储状态变更为第二存储状态,如将第一存储位图位置的存储状态从“0”变更为“1”,这个状态变更是指将待存储数据的存储位置标记为已使用,以便后续的数据读取和管理。
94.s202,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值。
95.在本实施例中,选择适合的hash函数,将待存储数据映射为一个整数或者一个字符串,常见的hash函数包括md5、sha1、murmurhash等。通过对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,第一哈希值可以用于哈希槽位索引和确定数据偏移,以便确定待存储数据在redis集群中的存储位图位置。
96.s203,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段。
97.在本实施例中,可以通过位运算和掩膜运算来对第一哈希值进行划分,划分过程可以根据具体的哈希算法来实现,目的是将哈希值分成两部分,以便后续的哈希槽位索引和数据偏移的确定。其中,第一哈希片段为第一哈希值中的高位哈希片段,第二哈希片段为第一哈希值中的低位哈希片段。
98.进一步地,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,具体包括:
99.确定redis集群中哈希槽位的索引长度;
100.基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段;
101.基于第一哈希片段对第一哈希值进行掩码运算,得到第二哈希片段。
102.进一步地,基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段,具体包括:
103.确定第一哈希值的起始位;
104.从第一哈希值的起始位开始,对第一哈希值进行逐位右移操作,直至右移长度等于哈希槽位的索引长度为止,得到第一哈希片段。
105.在redis集群中索引存储数据对应的哈希槽位时,使用的哈希片段是可以设定的,redis允许通过修改配置来更改哈希片段的位数。具体而言,可以使用hash-bits配置选项来指定哈希片段的位数。该选项可以设置为16、14、12或10,分别表示使用16位、14位、12位或10位的哈希片段来确定槽位索引。
106.需要说明的是,默认情况下,redis集群使用的是哈希片段的高16位作为槽位索引,即使用了16位的哈希片段来确定数据所属的槽位。
107.在本实施例中,以10位哈希槽位的索引长度为例,假如hash是一个32位的整数,可以表示为一个32位的二进制数,通过位运算操作将哈希值划分为高10位和低22位,从哈希值的起始位开始,通过右移操作将哈希值右移10位,得到高10位的值,通过使用位掩码(0x3fffff)来屏蔽高22位,保留低22位的值,偏移值可以通过以下公式计算得出:offset=hash&0x3fffff。
108.需要注意的是,修改hash-bits配置选项后,会影响redis集群的哈希槽位分配和数据的映射方式。因此,在修改哈希片段位数之前,需要仔细评估和规划,并确保所有节点上的配置保持一致,以避免数据的分布不一致和访问异常。
109.s204,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第
一哈希槽位。
110.在本实施例中,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位。从哈希值中取出高位哈希片段可以作为槽位位置的依据,这样可以将数据分散到不同的槽位中,实现分片存储。分片存储可以最大程度地提高内存利用率,并避免内存资源的浪费,通过良好的数据分片策略,可以使每个节点存储的数据量均衡,并且尽量减少冗余的存储,从而降低内存资源的浪费。
111.s205,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值。
112.在本实施例中,服务器确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值。假设槽位位置为slot,需要将数据n存储到对应节点的槽位位置为slot的redis集群中,可以将数据n对应的哈希值的低位哈希片段作为bitmap中的标识位,根据需要将bitmap中的标识的存储状态设置从“0”变更为“1”,表示数据n的存储。
113.s206,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。
114.在本实施例中,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,即bitmap中的标识位,得到第一存储位图位置,并将它的存储状态改变,来表征待存储数据的存储。bitmap是redis用来记录每个节点存储状态的一种机制,它将每个节点分成若干个存储位图位置,每个位置对应一个数据存储状态,这里的目的是将待存储数据的存储位置记录在存储位图中,并将它的存储状态改变,以便后续的数据读取和管理。
115.在上述实施例中,本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。
116.进一步地,在根据第一哈希槽位和第一数据偏移值确定待存储数据位图位置,并变更位图位置的存储状态之后,还包括:
117.接收数据查询指令,获取数据查询指令对应的待查询数据;
118.对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值;
119.对第二哈希值进行划分,得到第三哈希片段和第四哈希片段;
120.基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位;
121.确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值;
122.根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,得到第二存储位图位置;
123.检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。
124.当需要查询某个数据是否存在时,同样通过相同的哈希函数计算其哈希值,取出高位哈希片段作为槽位位置的依据,以及通过低位哈希片段确定数据偏移,以找到对应的节点、槽位位置和bitmap中的标识位,然后查询bitmap中对应的标识位的存储状态。
125.在本实施例中,当服务器接收数据查询指令,获取数据查询指令对应的待查询数据,采用相同的哈希函数对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值,采用相同的划分规则对第二哈希值进行划分,得到第三哈希片段和第四哈希片段,基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位,确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值,根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,及bitmap中的标识位,得到第二存储位图位置,检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。
126.进一步地,检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储,具体包括:
127.若第二存储位图位置的存储状态为第一存储状态,则确定待查询数据未完成位图存储;
128.基于第一存储状态生成第一数据查询结果,并输出第一数据查询结果;
129.若第二存储位图位置的存储状态为第二存储状态,则确定待查询数据已完成位图存储;
130.基于第二存储状态生成第二数据查询结果,并输出第二数据查询结果。
131.在本实施例中,如果第二存储位图位置的存储状态为第一存储状态,则确定待查询数据未完成位图存储,基于第一存储状态生成第一数据查询结果,并输出第一数据查询结果,表示待查询数据未被存储。如果第二存储位图位置的存储状态为第二存储状态,则确定待查询数据已完成位图存储,基于第二存储状态生成第二数据查询结果,并输出第二数据查询结果,表示待查询数据已被存储。
132.在本实施例中,本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后哈希槽位和数据偏移值快速查询数据的存储状态,提高redis集群数据查询效率。
133.在上述实施例中,本技术公开一种redis集群的分片存储方法,属于大数据技术领域和金融产险领域。本技术通过接收数据存储指令,获取数据存储指令对应的待存储数据,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。此外,本技术还通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后哈希槽位和数据偏移值快速查询数据的存储状态,提高redis集群数据查询效率。
134.在本实施例中,redis集群的分片存储方法运行于其上的电子设备(例如图1所示
的服务器)可以通过有线连接方式或者无线连接方式接收指令或者获取数据。需要指出的是,上述无线连接方式可以包括但不限于3g/4g连接、wifi连接、蓝牙连接、wimax连接、zigbee连接、uwb(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
135.需要强调的是,为进一步保证上述待存储数据的私密和安全性,上述待存储数据还可以存储于一区块链的节点中。
136.本技术所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
137.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)等非易失性存储介质,或随机存储记忆体(random access memory,ram)等。
138.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
139.进一步参考图3,作为对上述图2所示方法的实现,本技术提供了一种redis集群的分片存储装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
140.如图3所示,本实施例所述的redis集群的分片存储装置300,包括:
141.存储指令接收模块301,用于接收数据存储指令,获取数据存储指令对应的待存储数据;
142.第一哈希运算模块302,用于对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值;
143.第一哈希划分模块303,用于对第一哈希值进行划分,得到第一哈希片段和第二哈希片段;
144.第一槽位索引模块304,用于基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位;
145.第一数据偏移模块305,用于确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值;
146.数据位图存储模块306,用于根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。
147.进一步地,存储状态包括第一存储状态和第二存储状态,数据位图存储模块306具
体包括:
148.生成数据偏移指针,基于第一数据偏移值使用数据偏移指针遍历第一哈希槽位;
149.位图位置确定单元,用于根据数据偏移指针的遍历结果确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置;
150.存储状态变更单元,用于将第一存储位图位置的存储状态从第一存储状态变更为第二存储状态。
151.进一步地,redis集群的分片存储装置还包括:
152.查询指令接收模块,用于接收数据查询指令,获取数据查询指令对应的待查询数据;
153.第二哈希运算模块,用于对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值;
154.第二哈希划分模块,用于对第二哈希值进行划分,得到第三哈希片段和第四哈希片段;
155.第二槽位索引模块,用于基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位;
156.第二数据偏移模块,用于确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值;
157.位图数据查询模块,用于根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,得到第二存储位图位置;
158.存储状态检测模块,用于检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。
159.进一步地,存储状态检测模块具体包括:
160.第一检查结果单元,用于当第二存储位图位置的存储状态为第一存储状态时,确定待查询数据未完成位图存储;
161.第一查询结果输出单元,用于基于第一存储状态生成第一数据查询结果,并输出第一数据查询结果;
162.第二检查结果单元,用于当第二存储位图位置的存储状态为第二存储状态时,确定待查询数据已完成位图存储;
163.第二查询结果输出单元,用于基于第二存储状态生成第二数据查询结果,并输出第二数据查询结果。
164.进一步地,第一哈希划分模块303具体包括:
165.索引长度确定单元,用于确定redis集群中哈希槽位的索引长度;
166.哈希位运算单元,用于基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段;
167.哈希掩码运算单元,用于基于第一哈希片段对第一哈希值进行掩码运算,得到第二哈希片段。
168.进一步地,哈希位运算单元具体包括:
169.起始位确定子单元,用于确定第一哈希值的起始位;
170.逐位右移子单元,用于从第一哈希值的起始位开始,对第一哈希值进行逐位右移
操作,直至右移长度等于哈希槽位的索引长度为止,得到第一哈希片段。
171.在上述实施例中,本技术公开一种redis集群的分片存储装置,属于大数据技术领域和金融产险领域。本技术通过接收数据存储指令,获取数据存储指令对应的待存储数据,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。此外,本技术还通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后哈希槽位和数据偏移值快速查询数据的存储状态,提高redis集群数据查询效率。
172.为解决上述技术问题,本技术实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
173.所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。
174.所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
175.所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如redis集群的分片存储方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
176.所述处理器42在一些实施例中可以是中央处理器(central processing unit,
cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述redis集群的分片存储方法的计算机可读指令。
177.所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
178.在上述实施例中,本技术公开一种计算机设备,属于大数据技术领域和金融产险领域。本技术通过接收数据存储指令,获取数据存储指令对应的待存储数据,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。此外,本技术还通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后哈希槽位和数据偏移值快速查询数据的存储状态,提高redis集群数据查询效率。
179.本技术还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的redis集群的分片存储方法的步骤。
180.在上述实施例中,本技术公开一种计算机可读存储介质,属于大数据技术领域和金融产险领域。本技术通过接收数据存储指令,获取数据存储指令对应的待存储数据,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。此外,本技术还通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后哈希槽位和数据偏移值快速查询数据的存储状态,提高redis集群数据查询效率。
181.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做
出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
182.本技术可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
183.显然,以上所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例,附图中给出了本技术的较佳实施例,但并不限制本技术的专利范围。本技术可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本技术的公开内容的理解更加透彻全面。尽管参照前述实施例对本技术进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本技术说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本技术专利保护范围之内。

技术特征:
1.一种redis集群的分片存储方法,其特征在于,包括:接收数据存储指令,获取所述数据存储指令对应的待存储数据;对所述待存储数据进行哈希运算,获取所述待存储数据对应的哈希值,得到第一哈希值;对所述第一哈希值进行划分,得到第一哈希片段和第二哈希片段;基于所述第一哈希片段在所述redis集群中索引所述待存储数据对应的哈希槽位,得到第一哈希槽位;确定所述第二哈希片段在所述哈希槽位中数据偏移值,得到第一数据偏移值;根据所述第一哈希槽位和所述第一数据偏移值确定所述待存储数据在所述redis集群中的存储位图位置,得到第一存储位图位置,并变更所述第一存储位图位置的存储状态。2.如权利要求1所述的redis集群的分片存储方法,其特征在于,所述存储状态包括第一存储状态和第二存储状态,所述根据所述第一哈希槽位和所述第一数据偏移值确定所述待存储数据在所述redis集群中的存储位图位置,得到第一存储位图位置,并变更所述第一存储位图位置的存储状态,具体包括:生成数据偏移指针,基于所述第一数据偏移值使用所述数据偏移指针遍历所述第一哈希槽位;根据所述数据偏移指针的遍历结果确定所述待存储数据在所述redis集群中的存储位图位置,得到第一存储位图位置;将所述第一存储位图位置的存储状态从第一存储状态变更为第二存储状态。3.如权利要求2所述的redis集群的分片存储方法,其特征在于,在所述根据所述第一哈希槽位和所述第一数据偏移值确定所述待存储数据位图位置,并变更所述位图位置的存储状态之后,还包括:接收数据查询指令,获取所述数据查询指令对应的待查询数据;对所述待查询数据进行哈希运算,获取所述待查询数据对应的哈希值,得到第二哈希值;对所述第二哈希值进行划分,得到第三哈希片段和第四哈希片段;基于所述第三哈希片段在所述redis集群中索引所述待查询数据对应的哈希槽位,得到第二哈希槽位;确定所述第四哈希片段在所述哈希槽位中数据偏移值,得到第二数据偏移值;根据所述第二哈希槽位和所述第二数据偏移值确定所述待查询数据在所述redis集群中的存储位图位置,得到第二存储位图位置;检测所述第二存储位图位置的存储状态,并根据存储状态检测结果确定所述待查询数据是否完成位图存储。4.如权利要求3所述的redis集群的分片存储方法,其特征在于,所述检测所述第二存储位图位置的存储状态,并根据存储状态检测结果确定所述待查询数据是否完成位图存储,具体包括:若所述第二存储位图位置的存储状态为第一存储状态,则确定所述待查询数据未完成位图存储;基于所述第一存储状态生成第一数据查询结果,并输出所述第一数据查询结果;
若所述第二存储位图位置的存储状态为第二存储状态,则确定所述待查询数据已完成位图存储;基于所述第二存储状态生成第二数据查询结果,并输出所述第二数据查询结果。5.如权利要求1至4任意一项所述的redis集群的分片存储方法,其特征在于,所述对所述第一哈希值进行划分,得到第一哈希片段和第二哈希片段,具体包括:确定所述redis集群中哈希槽位的索引长度;基于所述哈希槽位的索引长度对所述第一哈希值进行位运算,得到所述第一哈希片段;基于所述第一哈希片段对所述第一哈希值进行掩码运算,得到所述第二哈希片段。6.如权利要求5所述的redis集群的分片存储方法,其特征在于,所述基于所述哈希槽位的索引长度对所述第一哈希值进行位运算,得到所述第一哈希片段,具体包括:确定所述第一哈希值的起始位;从所述第一哈希值的起始位开始,对所述第一哈希值进行逐位右移操作,直至右移长度等于所述哈希槽位的索引长度为止,得到所述第一哈希片段。7.一种redis集群的分片存储装置,其特征在于,包括:存储指令接收模块,用于接收数据存储指令,获取所述数据存储指令对应的待存储数据;第一哈希运算模块,用于对所述待存储数据进行哈希运算,获取所述待存储数据对应的哈希值,得到第一哈希值;第一哈希划分模块,用于对所述第一哈希值进行划分,得到第一哈希片段和第二哈希片段;第一槽位索引模块,用于基于所述第一哈希片段在所述redis集群中索引所述待存储数据对应的哈希槽位,得到第一哈希槽位;第一数据偏移模块,用于确定所述第二哈希片段在所述哈希槽位中数据偏移值,得到第一数据偏移值;数据位图存储模块,用于根据所述第一哈希槽位和所述第一数据偏移值确定所述待存储数据在所述redis集群中的存储位图位置,得到第一存储位图位置,并变更所述第一存储位图位置的存储状态。8.如权利要求7所述的redis集群的分片存储装置,其特征在于,所述redis集群的分片存储装置还包括:查询指令接收模块,用于接收数据查询指令,获取所述数据查询指令对应的待查询数据;第二哈希运算模块,用于对所述待查询数据进行哈希运算,获取所述待查询数据对应的哈希值,得到第二哈希值;第二哈希划分模块,用于对所述第二哈希值进行划分,得到第三哈希片段和第四哈希片段;第二槽位索引模块,用于基于所述第三哈希片段在所述redis集群中索引所述待查询数据对应的哈希槽位,得到第二哈希槽位;第二数据偏移模块,用于确定所述第四哈希片段在所述哈希槽位中数据偏移值,得到
第二数据偏移值;位图数据查询模块,用于根据所述第二哈希槽位和所述第二数据偏移值确定所述待查询数据在所述redis集群中的存储位图位置,得到第二存储位图位置;存储状态检测模块,用于检测所述第二存储位图位置的存储状态,并根据存储状态检测结果确定所述待查询数据是否完成位图存储。9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至6中任一项所述的redis集群的分片存储方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至6中任一项所述的redis集群的分片存储方法的步骤。

技术总结
本申请公开一种Redis集群的分片存储方法、装置、设备及存储介质,属于大数据技术领域和金融产险领域。本申请通过获取待存储数据,对待存储数据进行哈希运算,获取哈希值,对哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在Redis集群中索引哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,根据哈希槽位和数据偏移值确定待存储数据在Redis集群中的存储位图位置,并变更存储位图位置的存储状态。此外,本申请还涉及区块链技术,待存储数据可存储于区块链中。本申请通过采用哈希算法将数据均匀地分散到不同的Redis集群节点上,减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。衡性。衡性。


技术研发人员:谢青
受保护的技术使用者:中国平安财产保险股份有限公司
技术研发日:2023.06.29
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐