java重写redis服务端-创新互联
背景
最近研究了下redis的协议、持久化策略以及单线程模型,突然觉得和java很搭配。源码请用力戳这里
目前创新互联建站已为1000+的企业提供了网站建设、域名、虚拟主机、网站托管、服务器托管、企业网站设计、合山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。目的
鉴于redis是c编写,java的同学读起来比较费力,所以写java版。让更多的开发者理解高性能设计的精髓,同时加深底层传输,存储,索引的认知。
特征
1. 兼容大多数redis原生协议
2. 兼容redis桌面客户端0.9+
3. db分区隔离和事务机制
4. 高级特性:如阻塞队列,发布订阅
5. 数据持久采用jdk原生MappedByteBuffer同步刷盘(虚拟内存技术)
6. key,value存储隔离,仅key空间占虚拟机内存,而value只在使用时才加载,所以优于redis
7. 兼容jedis,spring-data-redis,spring-boot-data等常用redis java客户端工具
基准测试
单机(4核8g),1000连接,随机value set,tps大致在3W+
参考下图,16379为jredis,7003为redis
存储设计
jredis文件结构
默认8个分区,相当于8个db,数据在程序运行时同步写入,重启会自动读取恢复数据到内存。
db文件内容
分为一个key区+三个value类型区,对应磁盘文件结构为:
文件详细介绍
key区加载所有值类型的key
value区仅加载同类型的值
缓冲区设计
线性存储,自定义消息格式,消息定长,一个单元大存储1024字节,文件写满暂不支持动态扩容。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:java重写redis服务端-创新互联
网址分享:http://scyanting.com/article/csdcgh.html