# SkipList **Repository Path**: nonword/skip-list ## Basic Information - **Project Name**: SkipList - **Description**: 学习redis写的SkipList - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-04-17 - **Last Updated**: 2022-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # [English Version](./README-en.md) # KV存储引擎 在学习非关系型数据库redis,对跳表的实现很感兴趣,于是参照redis源码写了本项目。 本项目是基于跳表实现的轻量级键值型存储引擎,使用C++实现。插入数据、删除数据、查询数据、数据展示、数据落盘、文件加载数据,以及数据库大小显示。 在64核服务器上运行,随机写读情况下,该项目每秒可处理啊请求数(QPS): 24.39w,每秒可处理读请求数(QPS): 21.4w # 项目中文件 * main.cpp 包含skiplist.h使用跳表进行数据操作 * skiplist.h 跳表核心实现 * README.md 中文介绍 * README-en.md 英文介绍 * bin 生成可执行文件目录 * makefile 编译脚本 * store 数据落盘的文件存放在这个文件夹 * stress_test_start.sh 压力测试脚本 * LICENSE 使用协议 # 提供接口 * insertElement(插入数据) * deleteElement(删除数据) * searchElement(查询数据) * displayList(展示已存数据) * dumpFile(数据落盘) * loadFile(加载数据) * size(返回数据规模) # 存储引擎数据表现 ## 插入操作 跳表树高:18 采用随机插入数据测试: |插入数据规模(万条) |耗时(秒) | |---|---| |10 |0.316763 | |50 |1.86778 | |100 |4.10648 | 每秒可处理写请求数(QPS): 24.39w ## 取数据操作 |取数据规模(万条) |耗时(秒) | |---|---| |10|0.47148 |10| |50|2.16373 |50| |100|5.13204 |100| 每秒可处理读请求数(QPS): 21.4w # 项目运行方式 ``` make // complie demo main.cpp ./bin/main // run ``` 可以运行如下脚本测试kv存储引擎的性能(当然你可以根据自己的需求进行修改) ``` sh stress_test_start.sh ```