一种基于跳表的分片共享内存存储系统及其方法技术方案

技术编号:39595433 阅读:9 留言:0更新日期:2023-12-03 19:53
本发明专利技术公开一种基于跳表的分片共享内存存储系统及其方法,所述存储系统包括分片管理组

【技术实现步骤摘要】
一种基于跳表的分片共享内存存储系统及其方法


[0001]本专利技术涉及共享内存
,特别涉及一种基于跳表的分片共享内存存储系统及其方法


技术介绍

[0002]共享内存指
(shared memory)
在多处理器的计算机系统中,可以被不同中央处理器
(CPU)
访问的大容量内存

由于多个
CPU
需要快速访问存储器,这样就要对存储器进行缓存
(Cache)。
任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据

共享内存是
Unix
下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息

[0003]Redis(Remote Dictionary Server
,远程数据服务
)
是一款内存高速缓存数据库,该软件使用
C
语言编写,数据模型为
key

value
,由于
Redis
可支持丰富的数据类型,如
String、List、Hash、Set、Sorted Set
等,因此被广泛应用

[0004]对于数据存储,一般使用
redis
等数据存储系统,
redis
采用
keyr/>‑
value
的存储方式,通过使用
key
作为键值,为数据存储查询的唯一索引,可以查询出对应存储的数据,但查询速度快慢,当数据存储量增大,大于
redis
系统的存储最大阈值时,需要增大存储数据量的最大阈值,本技术因此而研发


技术实现思路

[0005]针对现有技术存在的问题,本专利技术提供一种基于跳表的分片共享内存存储系统及其方法

[0006]为了实现上述目的,本专利技术提供一种基于跳表的分片共享内存存储系统,其特征在于,包括分片管理组

分片模块

共享内存模块;
[0007]所述分片管理组用于打开或创建管理组共享内存模块,加载已存在的所有分片模块;
[0008]所述分片模块实现的是以跳表的原理,存储及访问存储到共享内存模块中的数据;
[0009]所述共享内存模块用于管理分片模块模块信息,在分片管理组件中,存储分片模块的默认最大值

存储数据数量

分片读写锁

分片列表

[0010]优选的,所述分片模块中的跳表是多级单项链表的形式,
key
值按从小到大的顺序存储在跳表中,跳表中的
key
是有序存储

[0011]本专利技术还提供一种基于跳表的分片共享内存存储方法,包括如下步骤:
[0012]步骤
S1
:插入数据:
[0013]步骤
S101
:插入数据
key

value
,锁分片管理组的读写锁,并检查所有分片的数据量是否已经达到或超过总容量的
95
%;
[0014]步骤
S102
:若是,则自动新增的分片模块,并检索数据插入的分片及位置,释放读写锁;
[0015]步骤
S103
:若否,则直接检索数据插入的分片及位置,释放读写锁;
[0016]步骤
S2
:数据查询:
[0017]步骤
S201
:锁分片管理组的读写锁,检索每个分片的跳表的
key
值,以待检索的
key
与分片的跳表头的第一个数据的
key
比较大小,以查询
key
所在分片;
[0018]步骤
S202
:再根据跳表中的数据
key
与待检索的
key
做比较,相等则查询到数据,释放读写锁;
[0019]步骤
S3
:数据删除:
[0020]步骤
S301
:锁分片管理组的读写锁,检索每个分片的跳表头的
key
值,以待删除的数据
key
与跳表头的
key
值做比较,以查询
key
所在分片;
[0021]步骤
S302
,再根据跳表中的数据
key
与待删除的数据做比较;若相等,则在跳表结构中删除对应的节点和释放对应的共享内存,并释放读写锁;否则,直接释放读写锁

[0022]优选的,所述步骤
S102
中的新增的分片模块的大小为默认设置的分片大小

[0023]优选的,所述步骤
S102
和步骤
S103
中检索数据插入的分片及位置的具体过程为:检索每个分片的跳表的
key
的值,以插入的
key
与分片的跳表头的第一个数据的
key
比较大小,如果是小于,则数据插入前一个分片模块,否则插入最后一个分片模块,释放读写锁

[0024]优选的,所述步骤
S201
中的查询
key
所在分片具体方法为:若待检索的
key
小于跳表头的第一个数据的
key
,则数据在前一个分片,选择前一个分片在跳表链表中检索数据,否则,选择最后一个分片在跳表链表中检索数据

[0025]优选的,所述步骤
S202
中的跳表中的数据
key
与查询的
key
不相等,则表示数据不存在

[0026]优选的,所述步骤
S301
中的以查询
key
所在分片具体方法为:若待删除的数据
key
小于跳表头的
key
值,则数据在前一个分片,选择前一个分片在跳表链表中检索数据;否则选择最后一个分片检索数据

[0027]采用本专利技术的技术方案,具有以下有益效果:
[0028]本专利技术通过创建共享内存,采用跳表的检索方式,自动根据存储数据量的大小,灵活自动增加数据存储的分片,扩大存储数据量的最大阈值

由于使用的是共享内存,访问

检索的时间达到纳秒级

支持高并发数据快速访问检索

[0029]本专利技术由于是基于跳表方式进行数据存储,而且是数据存储在共享内存中,数据查询效率达到纳秒级别,数据查询速度快;支本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于跳表的分片共享内存存储系统,其特征在于,包括分片管理组

分片模块

共享内存模块;所述分片管理组用于打开或创建管理组共享内存模块,加载已存在的所有分片模块;所述分片模块以跳表的原理存储及访问存储到共享内存模块中的数据;所述共享内存模块用于管理分片模块模块信息,在分片管理组件中,存储分片模块的默认最大值

存储数据数量

分片读写锁

分片列表
。2.
根据权利要求1所述的基于跳表的分片共享内存存储系统,其特征在于,所述分片模块中的跳表是多级单项链表的形式,
key
值按从小到大的顺序存储在跳表中,跳表中的
key
是有序存储
。3.
一种基于跳表的分片共享内存存储方法,其特征在于,包括如下步骤:步骤
S1
:插入数据:步骤
S101
:插入数据
key

value
,锁分片管理组的读写锁,并检查所有分片的数据量是否已经达到或超过总容量的
95
%;步骤
S102
:若是,则自动新增的分片模块,并检索数据插入的分片及位置,释放读写锁;步骤
S103
:若否,则直接检索数据插入的分片及位置,释放读写锁;步骤
S2
:数据查询:步骤
S201
:锁分片管理组的读写锁,检索每个分片的跳表的
key
值,以待检索的
key
与分片的跳表头的第一个数据的
key
比较大小,以查询
key
所在分片;步骤
S202
:再根据跳表中的数据
key
与待检索的
key
做比较,相等则查询到数据,释放读写锁;步骤
S3
:数据删除:步骤
S301
:锁分片管理组的读写锁,检索每个分片的跳表头的
key
值,以待删除的数据
key
...

【专利技术属性】
技术研发人员:凌远泽陈贤平陈文浩
申请(专利权)人:深圳技威时代科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1