引言
之前研究了下redis的协议、持久化策略以及单线程模型,突然觉得和java很搭配。
目的
纯个人爱好,练手。
特征
- 目前已兼容大多数redis原生协议
- set get.
- lpush rpush lrange
- hset hget hgetall
- pub sub
- keys expire del
- 支持jedis,spring-data-redis,spring-boot
- 兼容redis桌面客户端0.8,并实现了db分区隔离和简单事物机制
- 数据持久采用jdk mappedbytebuffer同步刷盘(虚拟内存技术),缓存容量理论上可以无限
性能
基于redis原生beachmark测试下来,单机(2核2g)每秒tps能达到3W+。参考下图,16379为jredis,7003为redis。
架构设计
整体分层
数据流程
存储结构
内存数据库结构
磁盘二进制数据结构
源码库