gitwtfhub

wtf is codis?

codislabs/codis — explained in plain English

Analysis updated 2026-06-24

13,230GoAudience · ops devopsComplexity · 4/5Setup · hard

TL;DR

Codis is a proxy that makes multiple Redis servers appear as one, letting you scale Redis beyond a single machine without changing your application code or client libraries.

Mindmap

mindmap
  root((codis))
    What it does
      Redis proxy
      Cluster scaling
      Pipelining support
    Architecture
      Multiple Redis servers
      ZooKeeper or etcd
      Web dashboard
    Use cases
      Scale beyond one server
      Zero-downtime expansion
      Unified Redis endpoint
    Audience
      DevOps engineers
      Backend developers
    Setup
      Go runtime
      Coordination service
      Admin CLI

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Scale a Redis deployment by adding more servers without restarting your application

REASON 2

Connect any existing Redis client library to a Codis cluster without code changes

REASON 3

Monitor Redis cluster health, data slots, and proxy nodes through a web dashboard

What's in the stack?

GoRedisZooKeeperetcd

How it stacks up

codislabs/codisrevel/revelopencontainers/runc
Stars13,23013,23113,219
LanguageGoGoGo
Setup difficultyhardeasyhard
Complexity4/53/54/5
Audienceops devopsdeveloperops devops

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · hard Time to first run · 1h+

Requires a running ZooKeeper or etcd coordination service plus multiple Redis instances before the cluster can start.

Wtf does this do

Codis is a tool for running Redis at a larger scale than a single server can handle. Redis is a popular in-memory data store that many applications use for caching and fast data access, but it runs on one machine by default. Codis sits in front of multiple Redis servers and acts as a proxy, making them appear as one unified system to any application that connects to it. Written in Go, it was built to handle production workloads and has been used at scale by at least one major Chinese technology company. The main problem Codis addresses is what happens when you need more capacity than one Redis server provides. It lets you add or remove servers from the cluster without restarting anything, which is a meaningful operational advantage. It also supports pipelining, a technique where multiple commands are sent together rather than one at a time, which can significantly speed up certain workloads. Because it works as a standard proxy, any existing Redis client library can connect to it without modification. The project includes a web-based dashboard for managing and monitoring the cluster, along with admin tools. You can watch the state of proxy nodes, data slots, server groups, and any monitoring agents running alongside Redis through a graphical interface rather than command-line tools alone. High availability is handled through integration with coordination services like ZooKeeper or etcd, allowing client-side tools to automatically route around any proxy that goes offline. Benchmark results are documented separately in the project repository. The README is concise and links out to fuller tutorials in both Chinese and English, though the English documentation was still marked as a work in progress at the time the README was written.

Yoink these prompts

Prompt 1
How do I migrate my Node.js app from a single Redis instance to a Codis cluster without changing any connection code?
Prompt 2
Walk me through setting up a Codis cluster with 3 Redis nodes and ZooKeeper on Ubuntu, include the dashboard setup.
Prompt 3
What Codis configuration do I need to enable pipelining for bulk import workloads, and how much faster will it be?
Prompt 4
How do I add a new Redis server to a running Codis cluster and rebalance data slots without downtime?
Prompt 5
Show me how to configure etcd instead of ZooKeeper as the coordination service in Codis.

Frequently asked questions

wtf is codis?

Codis is a proxy that makes multiple Redis servers appear as one, letting you scale Redis beyond a single machine without changing your application code or client libraries.

What language is codis written in?

Mainly Go. The stack also includes Go, Redis, ZooKeeper.

How hard is codis to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is codis for?

Mainly ops devops.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.