众所周知,levedb,rockdb 其核心存储引擎的数据结构就是跳表。
在 Redis 中,跳表被用于实现有序集合(sorted sets)数据类型。
本项目就是基于跳表实现的轻量级键值型存储引擎,使用 Java 实现。插入数据、删除数据、查询数据、数据展示、数据落盘、文件加载数据等功能。
- SkipList.java:跳表的核心实现
- StressTest.java:对跳表进行压力测试
- 跳表最大树高为 32
- 在单线程环境下测试(多线程反而会消耗更多时间以及资源,因为在插入操作时进行加锁操作
- 机器配置:MacOS(14.3.1) M1 芯片 + 16 GB 内存
插入数据规模(万条) | 耗时(毫秒) | QPS |
---|---|---|
10 | 129 | 775,194 |
50 | 935 | 534,759 |
100 | 2198 | 454,959 |
读取数据规模(万条) | 耗时(毫秒) | QPS |
---|---|---|
10 | 101 | 990,099 |
50 | 813 | 615,006 |
100 | 2130 | 469,484 |