explaingit

codislabs/codis

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

TLDR

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
Click or tap to explore — scroll the page freely

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

Things people build with this

USE CASE 1

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

USE CASE 2

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

USE CASE 3

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

Tech stack

GoRedisZooKeeperetcd

Getting it running

Difficulty · hard Time to first run · 1h+

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

In plain English

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.

Copy-paste 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.
Open on GitHub → Explain another repo

← codislabs on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.