目前基于Java语言实现的功能最完整的Redis-Server,适用于Java程序员学习并实践Redis缓存底层原理。
- 基于netty nio
- 基于 RESP 协议并支持redis-cli,jedis等客户端操作
- 拥有五种数据对象,支持六十多个常用操作命令
- 支持RDB、AOF持久化机制
- 支持惰性、定时两种过期策略;
- 支持基于jvm内存的8种驱逐策略并可自行扩展
- 支持Redis事务
- 吞吐量与延迟与 Redis 几乎相等甚至部分测试略优
每篇文档介绍了一个模块的底层原理以及相应的实现
使用启动类 ServerStart
启动即可, 支持 fluent 风格,可以自行配置
new RedisNetServer()
.ip("0.0.0.0") // 地址
.port(6379) // 端口号()
.channelOption(new DefaultChannelSelectStrategy()) // io模型
.dbNum(16) // 数据库数量
.evictStrategy(Evict.NO_EVICT()) // 逐出策略
.expireStrategy(Expire.DEFAULT_EXPIRE_STRATEGY()) // 过期策略
.aof(false) // 是否开启 AOF 持久化
.rdb(false) // 是否开启 RDB 持久化
.init()
.start();
由于本项目基于原版 Redis 协议格式开发,所以兼容各种客户端连接,如 redis-cli、jedis等。
Redis设计与实现07 性能测试 (isheihei.cn)
参考资料: