(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211125681.5
(22)申请日 2022.09.16
(71)申请人 国电南京自动化股份有限公司
地址 210009 江苏省南京市 鼓楼区新模范
马路38号
(72)发明人 徐衍 于丽丹 孙常浩 徐苏君
蔡雷鸣 高翔 张惠斌 练达
虞发桐
(74)专利代理 机构 南京纵横知识产权代理有限
公司 32224
专利代理师 董建林
(51)Int.Cl.
G06F 16/27(2019.01)
G06F 16/22(2019.01)
G06F 16/23(2019.01)G06F 16/28(2019.01)
(54)发明名称
基于Cuckoo Hash及Chain Hash的Redis集
群管理系统及方法
(57)摘要
本发明公开了基于Cuckoo Hash及Chain
Hash的Redis集群管理系 统及方法, 其中方法包
括利用一致性hash算法搭建Redis集群, 为真实
节点设置多个虚拟节点并将其排布到一个具有2
^32个均匀分布点的圆环上; 接收来自Redis客户
端的输入数据和指令, 构建二元 组并计算输入数
据的hash值, 调用Cuckoo Hash表的哈希函数H1
和H2及Chain Hash表的哈希函数H3计算输入数
据在table1、 table2、 table3的候选位置i1、 i2、
i3; 根据候选位置i1, i2或i3及二元组中指令做
相应的数据写入、 数据查询、 数据更新以及数据
删除等操作后, 将操作结果反馈给Redi s客户端,
并更新被操作数据的键频项; 利用系统中心模块
定期根据键频项的大小, 调整table1、 table2以
及table3中存储数据的存储位置。 本发明能够提
高数据库数据操作的效率。
权利要求书3页 说明书11页 附图4页
CN 115455117 A
2022.12.09
CN 115455117 A
1.基于Cuckoo Hash及Chain Hash的Redis集群管理系统, 其特征在于, 包括Redis客户
端、 系统中心模块以及多个系统子节点;
各系统子节点均包括Redis集群子节点和系统子模块, Redis集群子节点包括虚拟节
点和真实节 点, Redis集群子节 点的虚拟节 点和真实节 点排布在一个具有2^32个均匀分布
点的圆环上, 真实节点上 添加系统子模块;
所述系统子模块用于数据信息计算、 数据操作以及结果反馈;
所述系统中心模块独立于圆环之外;
所述系统中心模块用于系统初始化、 数据接收、 存储节点计算、 系统管理、 定时任务、 集
群故障检测以及记录各Redis集群子节点的虚拟节点与真实节点对应的hash记录表。
2.根据权利要求1所述的基于Cuckoo Hash及Chain Hash的Redis集群管理系统, 其特
征在于, 所述系统中心模块包括系统初始化单元、 数据接 收单元、 存储节点计算单元、 系统
管理单元、 定时任务单 元、 集群故障检测单 元;
所述系统初始化单元, 用于利用一致性hash算法部署Redis集群, 并在各真实节点上附
上系统子模块;
所述数据接收单元, 用于接收Redis客户端的输入数据及指令并将其提供给存储节点
计算功能;
所述存储节点计算单元, 用于计算输入数据的键信息的哈希值, 并根据哈希值和传入
指令选择相应的Redis集群子节点;
所述系统管理单元, 用于记录Redis集群的虚拟节点和真实节点间的关系映射, 并根据
存储节点计算功能的计算结果传递输入数据至相应子节点上的系统子模块, 系统管理单元
还负责子节点的全局管理;
所述定时任务单元, 定期根据键频项的大小, 调整table1、 table2以及table3中存储数
据的存储位置, 提高查询效率;
所述集群故障检测单元, 用于定期检测子节点的运行状态, 若节点出现故障则通知系
统管理功能进行节点更 换及数据转移。
3.根据权利要求1所述的基于Cuckoo Hash及Chain Hash的Redis集群管理系统, 其特
征在于, 所述系统子模块包括数据信息计算单 元、 数据操作单 元以及结果反馈单 元;
所述数据信息计算单 元, 用于计算输入数据的候选位置;
所述数据操作单元, 用于根据Redis客户端发出命令需求进行相应的数据写入、 数据更
新、 数据查询或数据删除操作, 并将 操作结果 提供给结果反馈单 元;
所述结果反馈单 元, 用于将数据操作结果反馈给Redis客户端。
4.基于Cuckoo Hash及Chain Hash的Redis集群管理方法, 其特 征在于, 包括以下步骤:
利用一致性hash算法搭建Redis集群, 为真实节点设置多个虚拟节点并将其排布到一
个具有2^ 32个均匀分布点的圆环上, 同时记录虚拟节点与真实节点对应的hash记录表;
在各Redis集群子节点的真实节点上 添加一个系统子模块;
利用系统中心模块接收来自Redis客户端的输入数据和指令, 构建二元组并计算输入
数据的hash值, hash值 ‑‑>Redis集群子节点的映射关系与搭建Redis集群 时所采用的哈希
值‑‑>圆环节点位置的映射关系相同, 根据该映射关系选择相应的Redis集群子节点, 并将
二元组发送至相应的Redis集群子节点的系统子模块;权 利 要 求 书 1/3 页
2
CN 115455117 A
2利用系统子模块调用Cuckoo Hash表的哈希函数H1和H2及Chain Hash表的哈希函数H3
计算输入数据在table1、 table2、 table3的候选位置i1、 i2、 i3;
利用系统子模块根据候选位置i1, i2或i3及二元组中指令做相应的数据写入、 数据查
询、 数据更新以及数据删除等操作后, 将操作结果反馈给Redis客户端, 并更新被操作数据
的键频项;
利用系统中心模块定期根据键频项的大小, 调整table1、 table2以及table3中存储数
据的存储位置。
5.根据权利要求4所述的基于Cuckoo Hash及Chain Hash的Redis集群管理方法, 其特
征在于, 所述利用系统中心模块定期根据键频项的大小, 调整table1、 table2以及table3中
存储数据的存 储位置包括以下步骤:
比较table3中存储数据的键频项与table1中存储数据的键频项, 若table3中最大键频
项大于table1最小键频项, 则将table3中最大键频项对应的存 储数据转移到table1中;
比较table3中存储数据的键频项与table2中存储数据的键频项, 若table3中最大键频
项大于table2最小键频项, 则将table3中最大键频项对应的存 储数据转移到table2中;
调用Cuckoo Hash表的哈希函数H1和H2计算table1和table2中各存储数据在table1和
table2的存 储位置i`1和i`2;
按照键频项从大到小的顺序, 依次判断table1和table2中存储数据对应的存储位置i`
1是否被键频项 更大的存储 数据占据: 其中, 若不是, 则将存储数据转移入对应的存储位置i
`1, 若是, 则判断存储 数据对应的存储位置i`2是否被键频项 更大的存储 数据占据: 其中, 若
不是, 则将存 储数据转移入 对应的存 储位置i`2, 若是, 则将存 储数据转移入溢出区。
6.根据权利要求4所述的基于Cuckoo Hash及Chain Hash的Redis集群管理方法, 其特
征在于, 所述哈希函数H1、 H2、 H 3均为Hash寻址法;
所述Hash寻址法包括直接寻址法、 数字分析法、 平方取中法、 除余法、 相乘取整法或折
叠法。
7.根据权利要求4所述的基于Cuckoo Hash及Chain Hash的Redis集群管理方法, 其特
征在于, 系统子模块 根据候选位置及二元组中指令做相应的数据写入操作, 包括以下步骤:
判断候选位置i1是否为空位置, 若是则将输入数据写入候选位置i1, 否则, 判断候选位
置i2是否为空位置, 若是则将输入数据写入候选位置i2, 否则, 判断候选位置i3是否为空位
置, 若是则将输入数据写入候选位置i3, 否则, 将输入数据写入table3末端空位;
为写入的输入数据添加键频项, 键频项的初始值 为0。
8.根据权利要求4所述的基于Cuckoo Hash及Chain Hash的Redis集群管理方法, 其特
征在于, 系统子模块 根据候选位置及二元组中指令做相应的数据查询操作, 包括以下步骤:
比对输入数据的key值与候选位置i1的key值, 若两个key值比对正确则读取候选位置
i1的存储数据, 否则, 比对输入数据的key值与候选位置i2的key值, 若两个key值比对正确
则读取候选位置i2的存储数据, 否则比对输入数据的key值与候选位置i3的key值, 若两个
key值比对正确则读取候选位置i3的存储数据, 否则, 将输入数据的key值与table3中各存
储数据的key值逐一比对, 直到比对正确或者全部比对失败, 读取对应的存储数据或输出读
取失败;
将被读取的存 储数据的键频项增1。权 利 要 求 书 2/3 页
3
CN 115455117 A
3
专利 基于Cuckoo Hash及Chain Hash的Redis集群管理系统及方法
文档预览
中文文档
19 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共19页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 思考人生 于 2024-02-07 20:38:23上传分享