为什么要开发kedis-server

1. Kedis-Server是什么

kedis-server是一个以RocksDB为存储引擎,支持Redis协议,并且支持大部分常用的Redis命令的一个持久化kv存储服务器

项目地址:kedis-server

2. Redis有什么问题

总的来说,Redis是一个非常优秀的内存kv存储服务器,支持非常丰富的数据结构,而且性能也非常棒。但是在实际使用Redis的时候,还是会碰到如下的一些问题:

    1)单个Redis实例的数据容量受限于机器内存的大小,而且由于Redis主备复制时需要fork一个子进程来获取内存的snapshot,所有单实例的maxmemory最好不要超过机器内存的一半,不然会用到swap,速度很慢,影响线上的服务

    2)如果打开Redis的持久化功能,对于大数据量的Redis重启,由于要加载所有数据到内存,启动时间很长

    3)Redis的主从复制断开重连时,只能保持很少的历史数据,如果断开时间比较长,又需要进行一次全量的数据复制,非常影响线上服务

3. 用于kedis-server替换基于proxy模式的Redis Cluster方案里面的Redis

我们做了一个基于proxy的redis cluster方案,用来存储对持久化需求不是很急切的kv存储业务,然后就想用一个持久化版本的类Redis存储服务器来替换Redis,这样就可以实现一个持久化版本的kv存储cluster方案

4. 业界其他的类Redis持久化存储方案

现在国内用的最广泛的类Redis持久化kv服务器有ssdb和pika,但这两个项目有一些不是很满足我们要求的地方:

1)对于ssdb,是用一个和Redis协议不一样的网络协议,而且命令也和Redis不太一样,存储引擎也是用了相比RocksDB性能比较差的LevelDB

2)对于pika,使用了Redis的协议和命令,但对于不同的数据类型,可以允许key重复,然后zset的score不支持double类型,依赖的库也比较复杂

5. Kedis-Server的特点

1) 用RocksDB作为存储引擎

2)支持Redis协议和大部分常用的Redis命令

3)主从复制支持全量和增量复制模式,用binlog进行增量数据同步,即时断开很长的时间,也能用增量同步数据

4. zset支持的score支持double类型,完全兼容Redis命令

5. 编译简单,要用一个命令就可以编译服务器

6. 更多特性详见项目文档

你可能感兴趣的:(为什么要开发kedis-server)