_____ _____ _____ _ ______
/ _ \ | ____| | _ \ | | / ___/
| | | | | |__ | | | | | | | |____
| | | | | __| | | | | | | \__ \
| |_| |_ | |___ | |_| | | | ___| |
\_______| |_____| |_____/ |_| /_____/
A C++11 implementation of distributed redis server, use Leveldb for persist storage.(including cluster)
- C++11 & CMake
- Linux or OS X
Use zookeeper for leader election, to reach high availability.
Of course you can also use redis-sentinel.
See details in cluster Readme, still in development.
You can test Qedis with redis-cli, redis-benchmark, or use redis as master with Qedis as slave or conversely, it also can work with redis sentinel. In a word, Qedis is full compatible with Redis.
Qedis supports module now, still in progress, much work to do. I added three commands(ldel, skeys, hgets) for demonstration.
Leveldb can be configured as backend for Qedis.
- Qedis 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.
./redis-benchmark -q -n 1000000 -P 50 -c 50
When memory is low, you can make Qedis to free memory by evict some key according to LRU.
Qedis supports them all :-)
- cmdlist
- Support lua
- Golang Cluster client