You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RPOPLPUSH support requires that source and destination keys hash to the same server. You can ensure this by using the same hashtag for source and destination key. Twemproxy does no checking on its end to verify that source and destination key hash to the same server, and the RPOPLPUSH command is forwarded to the server that the source key hashes to
SIDFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION and SUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same hashtag for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
ZINTERSTORE and ZUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same hashtag for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
EVAL and EVALSHA support is limited to scripts that take at least 1 key. If multiple keys are used, all keys must hash to the same server. You can ensure this by using the same hashtag for all keys. If you use more than 1 key, the proxy does no checking to verify that all keys hash to the same server, and the entire command is forwarded to the server that the first key hashes to
Connection
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| Command | Supported? | Format |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| AUTH | No | AUTH password |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| ECHO | No | ECHO message |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| PING | No | PING |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| QUIT | No | QUIT |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| SELECT | No | SELECT index |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
Server
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| Command | Supported? | Format |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| BGREWRITEAOF | No | BGREWRITEAOF |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| BGSAVE | No | BGSAVE |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| CLIENT KILL | No | CLIENT KILL ip:port |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| CLIENT LIST | No | CLIENT LIST |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| CONFIG GET | No | CONFIG GET parameter |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| CONFIG SET | No | CONFIG SET parameter value |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| CONFIG RESETSTAT | No | CONFIG RESETSTAT |
+-------------------+-------------+--------------------------------------------------------------------------------------------------------------------+
| DBSIZE | No | DBSIZE |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| DEBUG OBJECT | No | DEBUG OBJECT key |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| DEBUG SEGFAULT | No | DEBUG SEGFAULT |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| FLUSHALL | No | FLUSHALL |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| FLUSHDB | No | FLUSHDB |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| INFO | No | INFO |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| LASTSAVE | No | LASTSAVE |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| MONITOR | No | MONITOR |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| SAVE | No | SAVE |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| SHUTDOWN | No | SHUTDOWN [NOSAVE] [SAVE] |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| SLAVEOF | No | SLAVEOF host port |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| SLOWLOG | No | SLOWLOG subcommand [argument] |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| SYNC | No | SYNC |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
| TIME | No | TIME |
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
Note
redis commands are not case sensitive
only vectored commands 'MGET key [key ...]' and 'DEL key [key ...]' needs to be fragmented
Performance
Setup
redis-server running on machine A.
nutcracker running on machine A as a local proxy to redis-server.
redis-benchmark running on machine B.
machine A != machine B.
nutcracker built with --enable-debug=no
nutcracker running with mbuf-size of 512 (-m 512)
redis-server built from redis 2.6 branch
redis-benchmark against redis-server
$ redis-benchmark -h <machine-A> -q -t set,get,incr,lpush,lpop,sadd,spop,lpush,lrange -c 100 -p 6379
SET: 89285.71 requests per second
GET: 92592.59 requests per second
INCR: 89285.71 requests per second
LPUSH: 90090.09 requests per second
LPOP: 90090.09 requests per second
SADD: 90090.09 requests per second
SPOP: 93457.95 requests per second
LPUSH (needed to benchmark LRANGE): 89285.71 requests per second
LRANGE_100 (first 100 elements): 36496.35 requests per second
LRANGE_300 (first 300 elements): 15748.03 requests per second
LRANGE_500 (first 450 elements): 11135.86 requests per second
LRANGE_600 (first 600 elements): 8650.52 requests per second
redis-benchmark against nutcracker proxing redis-server
$ redis-benchmark -h <machine-A> -q -t set,get,incr,lpush,lpop,sadd,spop,lpush,lrange -c 100 -p 22121
SET: 85470.09 requests per second
GET: 86956.52 requests per second
INCR: 85470.09 requests per second
LPUSH: 84745.77 requests per second
LPOP: 86206.90 requests per second
SADD: 84745.77 requests per second
SPOP: 86956.52 requests per second
LPUSH (needed to benchmark LRANGE): 84745.77 requests per second
LRANGE_100 (first 100 elements): 29761.90 requests per second
LRANGE_300 (first 300 elements): 12376.24 requests per second
LRANGE_500 (first 450 elements): 8605.85 requests per second
LRANGE_600 (first 600 elements): 6587.62 requests per second