A tiny KV storage based on skiplist written in C++ language| 使用C++开发,基于跳表实现的轻量级键值数据库
A tiny KV storage based on skiplist written in C++ language| 使用C++开发,基于跳表实现的轻量级键值数据库
本项目为C++实现,想系统学习本项目,推荐 卡码网【kv存储引擎-CPP】实战课 想了解Java版本,推荐 卡码网【kv存储引擎-Java】实战课
版权申明: 本项目为我(程序员Carl)的原创。引用本项目文章请注明出处,例如:转自 https://github.com/youngyangyang04/Skiplist-CPP。 发现恶意抄袭或搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!
众所周知,非关系型数据库redis,以及levedb,rockdb其核心存储引擎的数据结构就是跳表。
本项目就是基于跳表实现的轻量级键值型存储引擎,使用C++实现。插入数据、删除数据、查询数据、数据展示、数据落盘、文件加载数据,以及数据库大小显示。
在随机写读情况下,该项目每秒可处理啊请求数(QPS): 24.39w,每秒可处理读请求数(QPS): 18.41w
跳表树高:18
采用随机插入数据测试:
| 插入数据规模(万条) | 耗时(秒) |
|---|---|
| 10 | 0.316763 |
| 50 | 1.86778 |
| 100 | 4.10648 |
每秒可处理写请求数(QPS): 24.39w
| 取数据规模(万条) | 耗时(秒) |
|---|---|
| 10 | 0.47148 |
| 50 | 2.56373 |
| 100 | 5.43204 |
每秒可处理读请求数(QPS): 18.41w
make // complie demo main.cpp
./bin/main // run 如果想自己写程序使用这个kv存储引擎,只需要在你的CPP文件中include skiplist.h 就可以了。
可以运行如下脚本测试kv存储引擎的性能(当然你可以根据自己的需求进行修改)
sh stress_test_start.sh 大家好,我是程序员Carl,《代码随想录》作者,哈工大师兄,先后在腾讯和百度从事分布式技术研发。
暂无开放 Issues,或尚未同步最近议题。