Skip to content
the kvrocks(kv-rocks) is SSD NoSQL which based on rocksdb, and compatible with the Redis protocol, intention to decrease the cost of memory and increase the capability
C++ Python CMake Shell Other
Branch: master
Clone or download
Latest commit 42426c5 Feb 24, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Feb 17, 2020
cmake MOD: update the rocksdb to the latest version(v6.2.2) Sep 11, 2019
docs DOC: add sortedint example Sep 6, 2019
external Upgrade the libevent to stable 2.1.11 Jan 21, 2020
src FIX: typo Feb 24, 2020
systemd MOD: supports upstart and systemd Oct 10, 2019
tests TST: hsetnx testcase should use different value (the ret of same valu… Feb 24, 2020
tools/kvrocks2redis MOD: check redis sync response , stop sync thread when error accour Nov 8, 2019
.gitignore MOD: remove submodule gflags and googletest Sep 5, 2019
.gitmodules MOD: remove submodule gflags and googletest Sep 5, 2019
.travis.yml FIX: typo Oct 16, 2019
CMakeLists.txt Bump v1.1.5 Jan 15, 2020
CONTRIBUTING MOD: cleanup for open source Aug 16, 2019
Changelog Bump v1.1.5 Jan 15, 2020
Dockerfile MOD: docker update the apt before install snappy Sep 6, 2019
LICENSE ADD: MIT LICENSE Aug 15, 2019
Makefile MOD: add makefile and update the glog to v0.4.0 Sep 5, 2019
README.md MOD: update README Nov 14, 2019
build.sh MOD: add git submodule init and update command to build.sh Aug 16, 2019
build_detect_platform MOD: add makefile and update the glog to v0.4.0 Sep 5, 2019
cppcheck.sh MOD: cleanup for open source Aug 16, 2019
cpplint.sh MOD: cleanup for open source Aug 16, 2019
docker_push.sh MOD: alias docker latest tag with latest image Oct 16, 2019
kvrocks.conf Bump v1.1.2 Dec 6, 2019
kvrocks2redis.conf MOD: stop using callbackstatemachine Nov 8, 2019
package.sh MOD: cleanup for open source Aug 16, 2019

README.md

kvrocks image

kvrocks is an open-source key-value database. which is based on rocksdb and compatible with Redis protocol. Intention to decrease the cost of memory and increase the capability while compared to Redis. The design of replication and storage was inspired by rocksplicator and blackwidow.

kvrocks has the following key features:

  • Redis protocol, user can use redis client to visit the kvrocks
  • Namespace, similar to redis db but use token per namespace
  • Replication, async replication using binlog like MySQL
  • High Available, supports redis sentinel to failover when master or slave was failed
  • Codis Protocol, the user can use the codis proxy and dashboard to manage the kvrocks

Build and run

requirements

  • g++ (required by c++11, version >= 4.8)
  • autoconf automake libtool

Build

NOTE: You shoud install the snappy first:

# Centos/Redhat
sudo yum install -y snappy snappy-devel autoconf automake libtool

# Ubuntu
sudo apt-get install libsnappy-dev autoconf automake libtool

# MACOSX
brew install snappy
$ git clone --recursive https://github.com/meitu/kvrocks.git
$ cd kvrocks
$ make -j4

run

$ ./src/kvrocks -c kvrocks.conf

TEST

NOTE: You shoud install the googletest first

make test

Supported platforms

  • centos 6/7
  • ubuntu
  • macosx

Try kvrocks using Docker

$ docker run -it -p 6666:6666 hulkdev/kvrocks
$ redis-cli -p 6666

127.0.0.1:6666> get a
(nil)

Namspace

namespace was used to isolate data between users. unlike all the redis databases can be visited by requirepass, we use one token per namespace. requirepass was regraded as admin token, only admin token allows to access the namespace command, as well as some commands like config, slaveof, bgave, etc…

# add token
127.0.0.1:6666>  namespace add ns1 mytoken
OK

# update token
127.0.0.1:6666> namespace set ns1 new_token
OK

# list namespace
127.0.0.1:6666> namespace get *
1) "ns1"
2) "new_token"
3) "__namespace"
4) "foobared"

# delete namespace
127.0.0.1:6666> namespace del ns1
OK

DOCs

Migrate Tools

  • migrate from redis to kvrocks, use redis-migrate-tool which developed by vipshop
  • migrate from kvrocks to redis. use kvrocks2redis in build dir

Performance

Hardware

  • CPU: 48 cores Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
  • Memory: 32 GiB
  • NET: Intel Corporation I350 Gigabit Network Connection
  • DISK: 2TB NVMe Intel SSD DC P460

Benchmark Client: multi-thread redis-benchmark(unstable branch)

1. Commands QPS

kvorkcs: workers = 16, benchmark: 8 threads/ 512 conns / 128 payload

latency: 99.9% < 10ms

image

2. QPS on different payload

kvorkcs: workers = 16, benchmark: 8 threads/ 512 conns

latency: 99.9% < 10ms

image

3. QPS on different workers

kvorkcs: workers = 16, benchmark: 8 threads/ 512 conns / 128 payload

latency: 99.9% < 10ms

image

License

kvrocks is under the MIT license. See the LICENSE file for details.

You can’t perform that action at this time.