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

文档序号:35672099发布日期:2023-10-07 21:23阅读:42来源:国知局
一种Redis集群的分片存储方法、装置、设备及存储介质与流程

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


背景技术:

1、redis集群位图(bitmap)存储方案是指使用redis作为存储引擎,利用其字符串数据类型实现的一种位图存储方案,在该方案中,每个位(bit)用于表示某种状态或标识,适用于处理海量整型数据,例如,在金融产险产品系统中,统计用户否登录过该系统的数据,可以使用redis集群bitmap存储方案来实现。

2、但在目前的redis集群bitmap存储方案中,通常将数据顺序存储在一个redis节点中,使用这种存储方案存储大量数据时,如果某个数据的偏移标识较大,就需要占用大量内存,产生较大的偏移值,导致内存浪费严重,并且所有的数据都集中存储在一个节点上,容易导致节点负载不均,容错性较弱,影响系统的性能和扩展能力。


技术实现思路

1、本技术实施例的目的在于提出一种redis集群的分片存储方法、装置、计算机设备及存储介质,以解决当前redis集群bitmap存储方案存在的内存浪费、负载不均、容错性较弱、影响系统的性能和扩展能力的技术问题。

2、为了解决上述技术问题,本技术实施例提供一种redis集群的分片存储方法,采用了如下所述的技术方案:

3、一种redis集群的分片存储方法,包括:

4、接收数据存储指令,获取数据存储指令对应的待存储数据;

5、对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值;

6、对第一哈希值进行划分,得到第一哈希片段和第二哈希片段;

7、基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位;

8、确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值;

9、根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。

10、进一步地,存储状态包括第一存储状态和第二存储状态,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态,具体包括:

11、生成数据偏移指针,基于第一数据偏移值使用数据偏移指针遍历第一哈希槽位;

12、根据数据偏移指针的遍历结果确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置;

13、将第一存储位图位置的存储状态从第一存储状态变更为第二存储状态。

14、进一步地,在根据第一哈希槽位和第一数据偏移值确定待存储数据位图位置,并变更位图位置的存储状态之后,还包括:

15、接收数据查询指令,获取数据查询指令对应的待查询数据;

16、对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值;

17、对第二哈希值进行划分,得到第三哈希片段和第四哈希片段;

18、基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位;

19、确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值;

20、根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,得到第二存储位图位置;

21、检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。

22、进一步地,检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储,具体包括:

23、若第二存储位图位置的存储状态为第一存储状态,则确定待查询数据未完成位图存储;

24、基于第一存储状态生成第一数据查询结果,并输出第一数据查询结果;

25、若第二存储位图位置的存储状态为第二存储状态,则确定待查询数据已完成位图存储;

26、基于第二存储状态生成第二数据查询结果,并输出第二数据查询结果。

27、进一步地,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,具体包括:

28、确定redis集群中哈希槽位的索引长度;

29、基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段;

30、基于第一哈希片段对第一哈希值进行掩码运算,得到第二哈希片段。

31、进一步地,基于哈希槽位的索引长度对第一哈希值进行位运算,得到第一哈希片段,具体包括:

32、确定第一哈希值的起始位;

33、从第一哈希值的起始位开始,对第一哈希值进行逐位右移操作,直至右移长度等于哈希槽位的索引长度为止,得到第一哈希片段。

34、为了解决上述技术问题,本技术实施例还提供一种redis集群的分片存储装置,采用了如下所述的技术方案:

35、一种redis集群的分片存储装置,包括:

36、存储指令接收模块,用于接收数据存储指令,获取数据存储指令对应的待存储数据;

37、第一哈希运算模块,用于对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值;

38、第一哈希划分模块,用于对第一哈希值进行划分,得到第一哈希片段和第二哈希片段;

39、第一槽位索引模块,用于基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位;

40、第一数据偏移模块,用于确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值;

41、数据位图存储模块,用于根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。

42、进一步地,redis集群的分片存储装置还包括:

43、查询指令接收模块,用于接收数据查询指令,获取数据查询指令对应的待查询数据;

44、第二哈希运算模块,用于对待查询数据进行哈希运算,获取待查询数据对应的哈希值,得到第二哈希值;

45、第二哈希划分模块,用于对第二哈希值进行划分,得到第三哈希片段和第四哈希片段;

46、第二槽位索引模块,用于基于第三哈希片段在redis集群中索引待查询数据对应的哈希槽位,得到第二哈希槽位;

47、第二数据偏移模块,用于确定第四哈希片段在哈希槽位中数据偏移值,得到第二数据偏移值;

48、位图数据查询模块,用于根据第二哈希槽位和第二数据偏移值确定待查询数据在redis集群中的存储位图位置,得到第二存储位图位置;

49、存储状态检测模块,用于检测第二存储位图位置的存储状态,并根据存储状态检测结果确定待查询数据是否完成位图存储。

50、为了解决上述技术问题,本技术实施例还提供一种计算机设备,采用了如下所述的技术方案:

51、一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上述任一项所述的redis集群的分片存储方法的步骤。

52、为了解决上述技术问题,本技术实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:

53、一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上述中任一项所述的redis集群的分片存储方法的步骤。

54、与现有技术相比,本技术实施例主要有以下有益效果:

55、本技术公开一种redis集群的分片存储方法、装置、设备及存储介质,属于大数据技术领域和金融产险领域。本技术通过接收数据存储指令,获取数据存储指令对应的待存储数据,对待存储数据进行哈希运算,获取待存储数据对应的哈希值,得到第一哈希值,对第一哈希值进行划分,得到第一哈希片段和第二哈希片段,基于第一哈希片段在redis集群中索引待存储数据对应的哈希槽位,得到第一哈希槽位,确定第二哈希片段在哈希槽位中数据偏移值,得到第一数据偏移值,根据第一哈希槽位和第一数据偏移值确定待存储数据在redis集群中的存储位图位置,得到第一存储位图位置,并变更第一存储位图位置的存储状态。本技术通过计算数据的哈希值,并通过哈希值在redis集群中索引哈希槽位,以及通过哈希值确定数据偏移值,然后将数据均匀地分散到不同的redis集群节点上,实现数据分片存储,当需要存储大量数据时,通过分片存储可以将数据均匀地分散在多个节点上,避免单个节点内存占用过大和减少了间隙值的产生,提升内存利用效率,同时提高系统的可扩展性和负载均衡性。

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