Corvus is a fast and lightweight redis cluster proxy for redis 3.0 with cluster mode enabled.
Most redis client implementations don't support redis cluster. We have a lot of services relying on redis, which are written in Python, Java, Go, Nodejs etc. It's hard to provide redis client libraries for multiple languages without breaking compatibilities. We used twemproxy before, but it relies on sentinel for high availabity, it also requires restarting to add or remove backend redis instances, which causes service interruption. And twemproxy is single threaded, we have to deploy multiple twemproxy instances for large number of clients, which causes the sa headaches.
Therefore, we made corvus.
If use the releases downloaded from releases page, just make:
$ make
With debug mode enabled:
make debug
If build from latest source:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make
Binary can be found at ./src/corvus.
Example configuration file is at corvus.conf.
$ ./src/corvus path/to/corvus.conf
SET, GET, INCR..) are supported.MGET: split to multiple GET.MSET: split to multiple SET.DEL: split to multiple single key DEL.EXISTS: split to multiple single key EXISTS.PING: ignored and won't be forwarded.INFO, TIME: won't be forwarded to backend redis, information collected in proxy
will be returned.AUTH: do authentication in proxy.EVAL: at least one key should be given. If there are multiple keys, all of
them should belong to the same node.The following commands require all argument keys to belong to the same redis node:
SORT.RPOP, LPUSH.SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION, SUNIONSTORE.ZINTERSTORE, ZUNIONSTORE.PFCOUNTE, PFMERGE.The following commands are not available, such as KEYS, we can't search keys across
all backend redis instances.
KEYS, MIGRATE, MOVE, OBJECT, RANDOMKEY, RENAME, RENAMENX, SCAN, WAIT.BITOP, MSETNXBLPOP, BRPOP, BRPOPLPUSH.PSUBSCRIBE, PUBLISH, PUBSUB, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE.EVALSHA, SCRIPT.DISCARD, EXEC, MULTI, UNWATCH, WATCH.CLUSTER.ECHO, QUIT, SELECT.BGREWRITEAOF, BGSAVE, CLIENT, COMMAND, CONFIG, DBSIZE, DEBUG, FLUSHALL,
FLUSHDB, LASTSAVE, MONITOR, ROLE, SAVE, SHUTDOWN, SLAVEOF, SLOWLOG, SYNC.MIT. Copyright (c) 2016 Eleme Inc.
See LICENSE for details.
Content type
Image
Digest
Size
258.7 MB
Last updated
over 10 years ago
docker pull tomasen/corvus