OpenAtomFoundation / pikiwidb

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
165 stars 56 forks source link
nosql nosql-database pika redis rocksdb

PikiwiDB

中文

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

Requirements

compile

It is recommended to use the latest version of Ubuntu or Debian for Linux systems

Execute compilation

If the machine's GCC version is less than 11, especially on CentOS6 or CentOS7, you need to upgrade the gcc version firstly.

Execute the following commands on CentOS:

sudo yum -y install centos-release-scl
sudo yum -y install devtoolset-11-gcc devtoolset-11-gcc-c++
scl enable devtoolset-11 bash

Execute this command to start compiling Pikiwidb:

./build.sh

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

./clear.sh
./build.sh --debug

Support module for write your own extensions

PikiwiDB 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 PikiwiDB.

Fully compatible with redis

You can test PikiwiDB with redis-cli, redis-benchmark, or use redis as master with PikiwiDB 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