back to home

CodisLabs / codis

Proxy based Redis cluster solution supporting pipeline and scaling dynamically

13,246 stars
2,674 forks
305 issues
GoJavaScriptHTML

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing CodisLabs/codis in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind-ai.vercel.app/repo/CodisLabs/codis)
Preview:Analyzed by RepoMind

Repository Summary (README)

Preview

<img src="doc/pictures/logo-3.png" height=80></img>

Gitter Build Status

Codis is a proxy based high performance Redis cluster solution written in Go. It is production-ready and widely used at wandoujia.com and many companies. You can see Codis Releases for latest and most stable realeases.

Donation

Donate if you want to help us maintaining this project. Thank you! See this issue for details

Compared with Twemproxy and Redis Cluster

<table> <tr><th></th><th>Codis</th><th>Twemproxy</th><th>Redis Cluster</th></tr> <tr><td>resharding without restarting cluster</td><td>Yes</td><td>No</td><td>Yes</td></tr> <tr><td>pipeline</td><td>Yes</td><td>Yes</td><td>No</td></tr> <tr><td>hash tags for multi-key operations</td><td>Yes</td><td>Yes</td><td>Yes</td></tr> <tr><td>multi-key operations while resharding</td><td>Yes</td><td>-</td><td>No(<a href="http://redis.io/topics/cluster-spec#multiple-keys-operations">details</a>)</td></tr> <tr><td>Redis clients supporting</td><td>Any clients</td><td>Any clients</td><td>Clients have to support cluster protocol</td></tr> </table> "Resharding" means migrating the data in one slot from one redis server to another, usually happens while increasing/decreasing the number of redis servers.

Other Features

  • GUI website dashboard & admin tools
  • Supports most of Redis commands, Fully compatible with Twemproxy(https://github.com/twitter/twemproxy)
  • Proxies can register on zk/etcd, clients can avoid dead proxies, see "High Availability" section.

Tutorial

简体中文 English (WIP)

FAQ

简体中文 English (WIP)

High Availability

简体中文 English (WIP)

Architecture

architecture

Snapshots

Proxy proxy

Slots slots

Group group

Sentinel sentinel

Benchmarks

See benchmark results

Authors

Active authors:

Emeritus 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~ :)