A fast and lightweight Redis Cluster Proxy for Redis 3.0
This version is mainly for:
CLUSTER NODES
, which makes corvus be able to work with Redis 4.0 now #124 . Note that corvus still does not support new commands introduced in redis 3.2 and redis 4.Download the corvus-0.2.7.tar.bz2
and run the following command.
$ tar xjf corvus-0.2.7.tar.bz2 && cd corvus-0.2.7
$ make deps && make
Then you can find corvus
binary in src/
This version mainly adds support for dynamic reconfiguration and more probes for addressing performance problem.
Support CONFIG
command. Usage:
CONFIG SET option value # Dynamically setting option, only support `node`, `loglevel`, and `slowlog-log-slower-than` now.
CONFIG GET option
CONFIG REWRITE # Update configuration file
Also, thanks to @jasonjoo2010, we can now specify config options in command line. Invoke corvus without any option for more details.
An additional field total_latency
is added in every slowlog entry. Now it contains:
For the multi-key commands(MGET, MSET, DEL, EXISTS), besides logging slowlog of the themselves, this version will also store its slowest sub-command (in terms of remote latency) with another id but the same total latency
.
The counts of ASK and MOVED received by corvus can be queried by INFO
command.
Reported by @tremez, some clients will send SELECT
first before sending request which corvus doesn't support in previous versions.
Some fixes for the bugs introduced by the new features are omitted.
#95 Add command config set node
.
#100 Support specifying configuration by command option.
#102 Add total latency to slowlog and record the slowest sub command.
#104 Add command config rewrite
.
#107 Add statistic for redirection.
#109 Reload node map after changing 'node' in config.
#115 Add support for SELECT command.
#103 Fix empty waiting_queue warning. Note that this is a workaround. And server_timeout of corvus should be less than the client timeout of redis. #108 Don't clear 'remotes' field from 'INFO' command during updating slot map.
#98 Fix dead loop
#86 Randomly pick up the node used to update slots #88 Fix duplicate client_eof caused by connection timeout #87 Support slowlog command #90 Add cluster name, pid, port to log #91 Send slow command to statsd #92 Use atomic operation to manipulate stats cumulation for safety #93 Fix invalid resp in 'proxy info' command #96 Amend response format of 'proxy info' #94 Ignore command with error result in slowlog. Fix some bugs
#82 Revert "Send slow command to statsd. Close #33"
#75 Removed beginning underscores from identifiers, resolves #37
#70 Send slow command to statsd. Close #33
#74 Remove unnecessary null pointer checks, closes #40
#73 Corvus==0.2.3 doesn't support redis 3.2.0 yet
#72 Use config read-strategy
to control read/write separation, closes #67
#71 Changed to compare keys in dict_index
for safety
#64 Replace CLUSTER SLOTS
with CLUSTER NODES
to get slot map
#68 Revert "Do not update slot map after server EOF"
#66 Implement command QUIT
, closes #65
#63 add support for TIME command
#59 Add option for separating read and write
#61 Do not update slot map after server EOF
INFO