Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/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
https://github.com/openatomfoundation/pikiwidb
nosql nosql-database pika redis rocksdb
Last synced: about 8 hours ago
JSON representation
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
- Host: GitHub
- URL: https://github.com/openatomfoundation/pikiwidb
- Owner: OpenAtomFoundation
- License: bsd-3-clause
- Created: 2023-10-11T01:37:56.000Z (about 1 year ago)
- Default Branch: unstable
- Last Pushed: 2024-08-07T11:53:58.000Z (3 months ago)
- Last Synced: 2024-08-07T13:28:06.014Z (3 months ago)
- Topics: nosql, nosql-database, pika, redis, rocksdb
- Language: C++
- Homepage:
- Size: 1.43 MB
- Stars: 182
- Watchers: 4
- Forks: 59
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# PikiwiDB
![](docs/images/pikiwidb-logo.png)
[中文](README_CN.md)A C++20 implementation of Redis Server, use RocksDB for persist storage.(not including cluster yet)
## Requirements
* Linux or OS X or FreeBSD
## Compile
**It is recommended to use the latest version of Ubuntu or Debian for Linux systems**
Execute compilation
Execute the following commands on Rocky Linux:
```bash
sudo dnf groupinstall -y 'Development Tools'
sudo dnf install cmake g++ autoconf perl -y
git config --global http.version HTTP/1.1
```Execute this command to start compiling Pikiwidb:
```bash
./etc/script/build.sh
```Pikiwidb is compiled by default in release mode, which does not support debugging. If debugging is needed, compile in debug mode.
```bash
./etc/script/build.sh --clear
./etc/script/build.sh --debug
```## Run
```bash
./bin/pikiwidb ./etc/conf/pikiwidb.conf
```## 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
- PikiwiDB is approximately 20-25% faster than redis if run benchmark with pipeline requests(set -P = 50 or higher).
- Average 80K requests per seconds for write, and 90K requests per seconds for read.
- Before run test, please ensure that std::list::size() is O(1), obey the C++11 standards.Run this command, compare with redis use pipeline commands, try it.
```bash
./redis-benchmark -q -n 1000000 -P 50 -c 50
```## Command List
#### show all supported commands list
- cmdlist#### key commands
- type exists del expire pexpire expireat pexpireat ttl pttl persist move keys randomkey rename renamenx scan sort#### server commands
- select dbsize bgsave save lastsave flushdb flushall client debug shutdown bgrewriteaof ping echo info monitor auth#### string commands
- set get getrange setrange getset append bitcount bitop getbit setbit incr incrby incrbyfloat decr decrby mget mset msetnx setnx setex psetex strlen#### list commands
- lpush rpush lpushx rpushx lpop rpop lindex llen lset ltrim lrange linsert lrem rpoplpush blpop brpop brpoplpush#### hash commands
- hget hmget hgetall hset hsetnx hmset hlen hexists hkeys hvals hdel hincrby hincrbyfloat hscan hstrlen#### set commands
- sadd scard srem sismember smembers sdiff sdiffstore sinter sinterstore sunion sunionstore smove spop srandmember sscan#### sorted set commands
- zadd zcard zrank zrevrank zrem zincrby zscore zrange zrevrange zrangebyscore zrevrangebyscore zremrangebyrank zremrangebyscore zpopmin zpopmax zunionstore zinterstore#### pubsub commands
- subscribe unsubscribe publish psubscribe punsubscribe pubsub#### multi commands
- watch unwatch multi exec discard#### replication commands
- sync slaveof## Contact Us
![](docs/images/pikiwidb-wechat.png)