# JavaRedisLite **Repository Path**: terrybao/java-redis-lite ## Basic Information - **Project Name**: JavaRedisLite - **Description**: 使用 java21 Caffeine 实现 redis 单机版功能的项目 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-17 - **Last Updated**: 2026-01-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, Redis, Caffeine, graalvm ## README # Java Redis Lite 当前项目是基于 Maven + Java21 + 虚拟线程 + 内置 HttpServer + Caffeine 缓存 + GraalVM 打包 实现 Redis 单机版本的全部功能。 ## 特性 - **Java21 虚拟线程**: 充分利用 Java21 的虚拟线程特性,实现高并发处理能力 - **内置 HttpServer**: 使用 Java 内置 HttpServer 提供 HTTP 接口 - **Caffeine 缓存**: 基于 Caffeine 高性能缓存库实现数据存储 - **GraalVM 原生镜像**: 支持编译为原生可执行文件,实现快速启动和低内存占用 - **Maven 构建管理**: 标准的 Maven 项目结构,便于依赖管理和构建 ## 技术栈 - **Java**: 21 - **构建工具**: Maven - **缓存**: Caffeine 3.1.8 - **测试框架**: JUnit 5.10.1 - **性能测试**: JMH 1.37 - **原生编译**: GraalVM 23.1.0 ## 项目结构 ``` java-redis-lite/ ├── src/ │ ├── main/ │ │ ├── java/com/redislite/ # 主代码 │ │ └── resources/ # 资源文件 │ ├── test/ │ │ ├── java/com/redislite/ # 单元测试 │ │ │ ├── string/ # String 类型测试 │ │ │ ├── hash/ # Hash 类型测试 │ │ │ ├── list/ # List 类型测试 │ │ │ ├── set/ # Set 类型测试 │ │ │ ├── sortedset/ # Sorted Set 类型测试 │ │ │ ├── transaction/ # 事务测试 │ │ │ ├── pubsub/ # 发布订阅测试 │ │ │ └── persistence/ # 持久化测试 │ │ └── resources/ # 测试资源 │ └── benchmark/ │ ├── java/com/redislite/ # 性能测试 │ │ ├── string/ # String 性能测试 │ │ ├── hash/ # Hash 性能测试 │ │ ├── list/ # List 性能测试 │ │ ├── set/ # Set 性能测试 │ │ ├── sortedset/ # Sorted Set 性能测试 │ │ ├── concurrency/ # 并发性能测试 │ │ └── memory/ # 内存性能测试 │ └── resources/ # 性能测试资源 ├── pom.xml # Maven 配置文件 ├── todo.md # Redis7 功能点实现对比列表 ├── README.md # 项目说明文档 └── LICENSE # 许可证 ``` ## 功能实现进度 详细的功能实现进度请查看 [todo.md](todo.md) 文件。 ### 已实现功能 - ✅ Maven 项目基础架构 - ✅ 单元测试代码包结构 - ✅ 性能测试代码包结构 - ✅ Redis7 功能点对比列表 ### 待实现功能 - ⬜ String 数据类型及命令 - ⬜ Hash 数据类型及命令 - ⬜ List 数据类型及命令 - ⬜ Set 数据类型及命令 - ⬜ Sorted Set 数据类型及命令 - ⬜ 事务支持 - ⬜ 发布订阅 - ⬜ 持久化(RDB/AOF) - ⬜ HTTP 协议接口 - ⬜ 虚拟线程并发处理 - ⬜ Caffeine 缓存集成 - ⬜ GraalVM 原生镜像打包 ## 构建和运行 ### 前置要求 - JDK 21 或更高版本 - Maven 3.8 或更高版本 - GraalVM(用于原生镜像编译,可选) ### 编译项目 ```bash mvn clean compile ``` ### 运行单元测试 ```bash mvn test ``` ### 运行性能测试 ```bash mvn test -Pbenchmark ``` ### 打包项目 ```bash mvn package ``` ### 编译原生镜像 ```bash mvn -Pnative native:compile ``` ## 测试 ### 单元测试 单元测试位于 `src/test/java/com/redislite/` 目录下,按数据类型和功能模块组织: - `string/` - String 类型命令测试 - `hash/` - Hash 类型命令测试 - `list/` - List 类型命令测试 - `set/` - Set 类型命令测试 - `sortedset/` - Sorted Set 类型命令测试 - `transaction/` - 事务功能测试 - `pubsub/` - 发布订阅功能测试 - `persistence/` - 持久化功能测试 ### 性能测试 性能测试位于 `src/benchmark/java/com/redislite/` 目录下,使用 JMH 框架: - `string/` - String 类型性能测试 - `hash/` - Hash 类型性能测试 - `list/` - List 类型性能测试 - `set/` - Set 类型性能测试 - `sortedset/` - Sorted Set 类型性能测试 - `concurrency/` - 并发性能测试 - `memory/` - 内存使用性能测试 ## 开发指南 ### 添加新功能 1. 在 `src/main/java/com/redislite/` 下实现功能代码 2. 在 `src/test/java/com/redislite/` 对应目录下添加单元测试 3. 在 `src/benchmark/java/com/redislite/` 对应目录下添加性能测试 4. 更新 `todo.md` 文件标记功能实现状态 ### 代码规范 - 使用 Java21 特性(包括虚拟线程) - 遵循 Java 命名规范 - 添加必要的单元测试 - 添加性能测试以验证性能指标 ## 许可证 本项目采用开源许可证,详见 [LICENSE](LICENSE) 文件。 ## 贡献 欢迎提交 Issue 和 Pull Request。 ## 联系方式 如有问题或建议,请通过 Issue 联系。