arana-db / kiwi

a high-performance, large-capacity, multi-tenant, data-persistent, strong data consistency based on raft, Redis-compatible elastic KV data storage system based on RocksDB
BSD 3-Clause "New" or "Revised" License
9 stars 5 forks source link

Kiwi

中文

A C++20 implementation of Redis Server, use RocksDB for persist storage.(not including cluster yet)

Requirements

# Rocky Linux, Fedora Linux, CentOS
sudo dnf groupinstall -y 'Development Tools'
sudo dnf install cmake g++ autoconf perl -y
git config --global http.version HTTP/1.1
# Ubuntu
sudo apt install cmake g++ autoconf perl -y
git config --global http.version HTTP/1.1

Compile

Execute this command to start compiling Kiwi:

./etc/script/build.sh 

Kiwi is compiled by default in release mode, which does not support debugging. If debugging is needed, compile in debug mode.

./etc/script/build.sh --clear
./etc/script/build.sh --debug

Run

./bin/kiwi ./etc/conf/Kiwi.conf

Support module for write your own extensions

Kiwi supports module now, still in progress, much work to do. I added three commands(ldel, skeys, hgets) for demonstration.

Persistence: Not limited to memory

RocksDB can be configured as backend for Kiwi.

Fully compatible with redis

You can test Kiwi with redis-cli, redis-benchmark, or use redis as master with Kiwi as slave or conversely, it also can work with redis sentinel.

High Performance

Run this command, compare with redis use pipeline commands, try it.

./redis-benchmark -q -n 1000000 -P 50 -c 50

Command List

show all supported commands list

key commands

server commands

string commands

list commands

hash commands

set commands

sorted set commands

pubsub commands

multi commands

replication commands

Contact Us