从0到1构建redis

引言

之前研究了下redis的协议、持久化策略以及单线程模型,突然觉得和java很搭配。

目的

纯个人爱好,练手。

特征

  • 目前已兼容大多数redis原生协议
  1. set get.
  2. lpush rpush lrange  
  3. hset hget hgetall    
  4. pub sub    
  5. 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

架构设计

整体分层

数据流程

存储结构

内存数据库结构

磁盘二进制数据结构


源码库

https://github.com/lmx1989219/jredis/tree/database1.0

猜你喜欢

转载自blog.csdn.net/lmx1989219/article/details/78862762