#Codis - yet another fast distributed solution for Redis
![Build Status](https://travis-ci.org/wandoulabs/codis.svg)
Codis is a proxy based high performance Redis cluster solution written in Go/C, an alternative to Twemproxy.
Codis supports multiple stateless proxy with multiple redis instances.
Codis is engineered to elastically scale, Easily add or remove redis or proxy instances on-demand/dynamicly.
Codis is production-ready and is widely used by wandoujia.com.
##Features
- Auto rebalance
- Extremely simple to use
- Support both redis or rocksdb transparently
- GUI dashboard & admin tools
- Supports most of Redis commands, Fully compatible with twemproxy(https://github.com/twitter/twemproxy)
- Native Redis clients are supported
- Safe and transparent data migration, Easily add or remove nodes on-demand.
- Command-line interface is also provided
- RESTful APIs
Build and Install
- Install go & ZooKeeper
- go get github.com/wandoulabs/codis
- cd codis
- ./bootstrap.sh
- make gotest
- cd sample
- follow instructions in usage.md
Tutorial
简体中文
English
FAQ
简体中文
English (WIP)
Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
MemTotal: 16376596 kB
Twemproxy:
redis-benchmark -p 22121 -c 500 -n 5000000 -P 100 -r 10000 -t get,set
Codis:
redis-benchmark -p 19000 -c 500 -n 5000000 -P 100 -r 10000 -t get,set
Result:
![main](https://github.com/upton/codis/raw/f36dcfde5708/doc/bench.png)
简体中文
English (WIP)
For Java users who want to support HA
[Jodis (HA Codis Connection Pool based on Jedis)] (https://github.com/wandoulabs/codis/tree/master/extern/jodis)
Architecture
![architecture](https://github.com/upton/codis/raw/f36dcfde5708/doc/pictures/architecture.png)
Snapshots
Dashboard
![main](https://github.com/upton/codis/raw/f36dcfde5708/doc/pictures/snapshot.png)
Migrate
![migrate](https://github.com/upton/codis/raw/f36dcfde5708/doc/pictures/snapshot_migrate.png)
Slots
![slots](https://github.com/upton/codis/raw/f36dcfde5708/doc/pictures/slots.png)
Authors
Thanks:
License
Codis is licensed under MIT, see MIT-LICENSE.txt
You are welcome to use Codis in your product, and feel free to let us know~ :)