java重写redis服务端
admin
2023-02-07 00:20:04
0

背景

最近研究了下redis的协议、持久化策略以及单线程模型,突然觉得和java很搭配。源码请用力戳这里

目的

鉴于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
java重写redis服务端
java重写redis服务端

存储设计

jredis文件结构

默认8个分区,相当于8个db,数据在程序运行时同步写入,重启会自动读取恢复数据到内存。
java重写redis服务端

db文件内容

分为一个key区+三个value类型区,对应磁盘文件结构为:
java重写redis服务端

文件详细介绍

key区加载所有值类型的key
value区仅加载同类型的值
java重写redis服务端

缓冲区设计

线性存储,自定义消息格式,消息定长,一个单元最大存储1024字节,文件写满暂不支持动态扩容。
java重写redis服务端

相关内容

热门资讯

终于懂了“山西扣点点究竟有挂吗... 终于懂了“山西扣点点究竟有挂吗”外卦神器下载您好,山西扣点点这个游戏其实有挂的,确实是有挂的,需要了...
【第一财经】“菠萝竞技到底有挂... 有 亲,根据资深记者爆料菠萝竞技是可以开挂的,确实有挂(咨询软件无需打开...
玩家攻略科普“富豪麻将怎么开挂... 您好:富豪麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
重磅消息“天天摸麻将怎么装挂”... 家人们!今天小编来为大家解答天天摸麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...
今日重大消息“微乐掼蛋是不是有... 今日重大消息“微乐掼蛋是不是有挂”果然有透视挂您好,微乐掼蛋这个游戏其实有挂的,确实是有挂的,需要了...
我来教教您“普通牌九透视真的有... 您好:普通牌九透视这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
终于懂了“新金龙炸/金/花有挂... 家人们!今天小编来为大家解答新金龙炸/金/花透视挂怎么安装这个问题咨询软件客服徽9752949的挂在...
玩家攻略科普“嘻游联盟可以开挂... 家人们!今天小编来为大家解答嘻游联盟透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
玩家分享攻略“皇豪众娱炸/金/... 网上科普关于“皇豪众娱炸/金/花有没有挂”话题很是火热,小编也是针对皇豪众娱炸/金/花作*弊开挂的方...
玩家最新攻略“游戏茶苑有挂吗”... 家人们!今天小编来为大家解答游戏茶苑透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...