本项目是Linux上一个基于协程和io_uring的C++的轻量级Redis
使用跳表作为核心数据结构,支持Redis的五种数据类型:字符串,哈希,列表,集合,有序集合
支持Redis的五种数据类型的基本操作命令,基于读写锁保证命令的原子性,支持事务的执行和撤销
实现了基于RDB和AOF的混合持久化,每秒钟会将数据异步写入AOF文件,会根据时间间隔和写入次数决定是否执行RDB,提供了数据安全和更快的数据恢复速度。
利用io_uring实现了高性能的异步IO,支持多个IO操作的批量提交,减少系统调用次数,提高性能
利用io_uring的异步IO和linux O_APPEND特性实现了异步且线程安全的高性能日志系统,支持多种日志级别和提供详细的日志信息
包装C++20协程的coroutine,实现了Awaiter和Task,简化异步编程
基于协程实现了一个简单的调度器,支持协程的创建、销毁、挂起和唤醒,程序会根据CPU核心数创建相应数量的调度器,每个调度器互相独立,互不干扰
自动处理SIGTERM和SIGINT信号,释放所有资源后优雅地关闭服务器
Linux内核6.1及以上,GCC14及以上,liburing2.7及以上
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cd build
ninja服务端
cd build/tinyRedis/tinyRedisServer
./tinyRedisServer客户端
cd build/tinyRedis/tinyRedisClient
./tinyRedisClient