All Projects → eleme → Corvus

eleme / Corvus

Licence: mit
A fast and lightweight Redis Cluster Proxy for Redis 3.0

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Corvus

Undermoon
Mordern Redis Cluster solution for easy operation.
Stars: ✭ 166 (-78.1%)
Mutual labels:  redis, redis-cluster, proxy
Chameleon
Customizable honeypots for monitoring network traffic, bots activities and username\password credentials (DNS, HTTP Proxy, HTTP, HTTPS, SSH, POP3, IMAP, STMP, RDP, VNC, SMB, SOCKS5, Redis, TELNET, Postgres and MySQL)
Stars: ✭ 230 (-69.66%)
Mutual labels:  redis, proxy
Redis Cluster
Redis Cluster setup running on Kubernetes
Stars: ✭ 230 (-69.66%)
Mutual labels:  redis, redis-cluster
Xredis
Redis C++ client, support the data slice storage, support redis cluster, thread-safe,multi-platform,connection pool, read/write separation.
Stars: ✭ 285 (-62.4%)
Mutual labels:  redis, redis-cluster
Redis Manager
Redis 一站式管理平台,支持集群的监控、安装、管理、告警以及基本的数据操作
Stars: ✭ 2,646 (+249.08%)
Mutual labels:  redis, redis-cluster
Proxypool
An Efficient ProxyPool with Getter, Tester and Server
Stars: ✭ 3,050 (+302.37%)
Mutual labels:  redis, proxy
Redisson
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Stars: ✭ 17,972 (+2270.98%)
Mutual labels:  redis, redis-cluster
Lettuce Core
Advanced Java Redis client for thread-safe sync, async, and reactive usage. Supports Cluster, Sentinel, Pipelining, and codecs.
Stars: ✭ 4,319 (+469.79%)
Mutual labels:  redis, redis-cluster
Redis Ui
📡 P3X Redis UI is a very functional handy database GUI and works in your pocket on the responsive web or as a desktop app
Stars: ✭ 334 (-55.94%)
Mutual labels:  redis, redis-cluster
Fastoredis
FastoRedis is a crossplatform Redis GUI management tool.
Stars: ✭ 316 (-58.31%)
Mutual labels:  redis, redis-cluster
Redisc
A Go redis cluster client built on top of redigo.
Stars: ✭ 183 (-75.86%)
Mutual labels:  redis, redis-cluster
Quick redis blog
QuickRedis is a free forever Redis Desktop manager. It supports direct connection, sentinel, and cluster mode, supports multiple languages, supports hundreds of millions of keys, and has an amazing UI. Supports both Windows, Mac OS X and Linux platform.
Stars: ✭ 594 (-21.64%)
Mutual labels:  redis, redis-cluster
Spoon
🥄 A package for building specific Proxy Pool for different Sites.
Stars: ✭ 173 (-77.18%)
Mutual labels:  redis, proxy
Cachingframework.redis
Distributed caching based on StackExchange.Redis and Redis. Includes support for tagging and is cluster-compatible.
Stars: ✭ 209 (-72.43%)
Mutual labels:  redis, redis-cluster
Proxy pool
Python爬虫代理IP池(proxy pool)
Stars: ✭ 13,964 (+1742.22%)
Mutual labels:  redis, proxy
Hiredis Vip
Support redis cluster. Maintained and used at vipshop.
Stars: ✭ 274 (-63.85%)
Mutual labels:  redis, redis-cluster
Codis
Proxy based Redis cluster solution supporting pipeline and scaling dynamically
Stars: ✭ 12,285 (+1520.71%)
Mutual labels:  redis, redis-cluster
Redex
Cloud-native Redis server implemented in Elixir
Stars: ✭ 160 (-78.89%)
Mutual labels:  redis, redis-cluster
Redis Articles
Redis相关文章每日精选~
Stars: ✭ 307 (-59.5%)
Mutual labels:  redis, redis-cluster
Redis Plus Plus
Redis client written in C++
Stars: ✭ 428 (-43.54%)
Mutual labels:  redis, redis-cluster

Corvus

Build Status

Corvus is a fast and lightweight redis cluster proxy for redis 3.0 with cluster mode enabled.

Why

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.

Features

  • Fast.
  • Lightweight.
  • Painless upgrade to official redis cluster from twemproxy.
  • Multiple threading.
  • Reuseport support.
  • Pipeline support.
  • Statsd integration.
  • Syslog integration.
  • Can direct read operations to slaves.

Performance

See details in our test results.

Requirements

  • Linux >= 3.9
  • Redis <= 3.0.7 (For version up to/including 0.2.3)

Build

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.

Configuration

Example configuration file is at corvus.conf.

Usage

$ ./src/corvus path/to/corvus.conf

Commands

  • All single-key commands (like SET, GET, INCR..) are supported.
  • Batch commands are split into multiple single-key commands.
  • Commands performing complex multi-key operations like unions or intersections are available as well as long as the keys all belong to the same node.

Modified commands

  • 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.
  • SLOWLOG: return the slowlogs saved by corvus itself. Note that unlike redis, in the slowlog entry there's an additional remote latency field before the total latency field. The slowlog will also log the slowest sub command for multiple-key commands: MGET, MSET, DEL, EXISTS. The total latency of sub cmd entry will just be the same as its parent cmd.
  • AUTH: do authentication in proxy.
  • CONFIG: support get, set, and rewrite sub-command to retrieve and manipulate corvus config.
  • SELECT: ignored if index is 0, won't be forwarded.

Restricted commands

  • 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.

Unsupported commands

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, MSETNX
  • BLPOP, BRPOP, BRPOPLPUSH.
  • PSUBSCRIBE, PUBLISH, PUBSUB, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE.
  • EVALSHA, SCRIPT.
  • DISCARD, EXEC, MULTI, UNWATCH, WATCH.
  • CLUSTER.
  • ECHO, QUIT.
  • BGREWRITEAOF, BGSAVE, CLIENT, COMMAND, CONFIG, DBSIZE, DEBUG, FLUSHALL, FLUSHDB, LASTSAVE, MONITOR, ROLE, SAVE, SHUTDOWN, SLAVEOF, SYNC.

License

MIT. Copyright (c) 2016 Eleme Inc.

See LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].