corvus
v0.2.7
Corvus是啟用群集模式的REDIS 3.0的快速輕巧的REDIS群集代理。
大多數REDIS客戶端實現不支持REDIS群集。我們有很多依賴Redis的服務,這些服務是用Python,Java,GO,Nodejs編寫的。我們以前使用過Twemproxy,但它依賴於Sentinel來獲得高可用性,還需要重新啟動或刪除後端REDIS實例,這會導致服務中斷。 Twemproxy是單線線,我們必須為大量客戶端部署多個TWEMPROXY實例,這會導致SA頭痛。
因此,我們製作了Corvus。
請參閱我們的測試結果中的詳細信息。
如果使用從版本頁面下載的發行版,請製作:
$ make
啟用了調試模式:
make debug
如果從最新來源構建:
git clone https://github.com/eleme/corvus.git
cd corvus
git submodule update --init
make deps # need autoconf
make二進制可以在./src/corvus上找到。
示例配置文件位於corvus.conf。
$ ./src/corvus path/to/corvus.confSET , GET , INCR ..)。MGET :分為多個GET 。MSET :分為多SET 。DEL :分為多個單鍵DEL 。EXISTS :分為多個單密鑰EXISTSPING :被忽略,不會被轉發。INFO , TIME :不會轉發到後端redis,將返回代理中收集的信息。SLOWLOG :返回Corvus本身保存的慢速插條。請注意,與Redis不同,在Slowlog條目中,在total latency字段之前還有一個額外的remote latency字段。 Slowlog還將記錄多鍵命令的最慢的子命令: MGET , MSET , DEL , EXISTS 。子CMD輸入的總延遲與其父cmd相同。AUTH :代理中的身份驗證。CONFIG :支持get , set和rewrite子命令以檢索和操縱Corvus配置。SELECT :如果索引為0 ,則不會轉發。 EVAL :至少應該給出一個鑰匙。如果有多個鍵,則所有鍵都應屬於同一節點。以下命令要求所有參數鍵屬於相同的redis節點:
SORT 。RPOP , LPUSH 。SDIFF , SDIFFSTORE , SINTER , SINTERSTORE , SMOVE , SUNION , SUNIONSTORE 。ZINTERSTORE , ZUNIONSTORE 。PFCOUNTE , PFMERGE 。 以下命令不可用,例如KEYS ,我們無法在所有後端redis實例中搜索鍵。
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 。BGREWRITEAOF , BGSAVE , CLIENT , COMMAND , CONFIG ,dbsize, DBSIZE , DEBUG , FLUSHALL , FLUSHDB , MONITOR ,cole, LASTSAVE ,save, SAVE , ROLE , SHUTDOWN , SLAVEOF , SYNC 。 麻省理工學院。版權(C)2016 Eleme Inc.
有關詳細信息,請參見許可證。