# codislabs/codis

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/codislabs-codis).**

13,224 stars · 2,659 forks · Go · MIT

## Links

- GitHub: https://github.com/CodisLabs/codis
- awesome-repositories: https://awesome-repositories.com/repository/codislabs-codis.md

## Topics

`go` `golang` `nosql` `redis` `redis-cluster`

## Description

Codis is a distributed proxy system designed for scaling Redis clusters. It provides a sharding proxy that distributes data across multiple instances and a cluster manager to oversee the environment.

The system enables horizontal scaling through dynamic resharding, which allows data slots to be migrated between servers without interrupting operations. It supports multi-key atomic operations using hash tags to ensure related keys are routed to the same server.

The platform includes a graphical cluster management dashboard for monitoring and administration. It implements high availability proxying through coordination services to route traffic away from failed nodes and utilizes pipelined command execution to reduce network latency.

## Tags

### Data & Databases

- [Distributed Caching](https://awesome-repositories.com/f/data-databases/distributed-caching.md) — Provides a distributed proxy system that manages data sharding and request routing across a Redis cluster.
- [Dynamic Resharding](https://awesome-repositories.com/f/data-databases/dynamic-data-mapping/dynamic-resharding.md) — Allows runtime splitting and merging of database shards to adjust cluster size without interrupting operations. ([source](https://github.com/codislabs/codis#readme))
- [Dynamic Slot Migrations](https://awesome-repositories.com/f/data-databases/dynamic-slot-migrations.md) — Provides real-time migration of data slots between servers to allow horizontal scaling without interrupting availability.
- [Hash-Tag Key Mapping](https://awesome-repositories.com/f/data-databases/hash-tag-key-mapping.md) — Ensures multiple keys map to the same server via hash tags to enable atomic operations on shared datasets.
- [Horizontal Scaling](https://awesome-repositories.com/f/data-databases/horizontal-scaling.md) — Enables horizontal scaling of Redis deployments by distributing data and requests across multiple server instances.
- [Cluster Topology Management](https://awesome-repositories.com/f/data-databases/redis-clients/cluster-topology-management.md) — Provides the active routing and discovery logic necessary to manage a distributed Redis proxy cluster.
- [Sharding Proxies](https://awesome-repositories.com/f/data-databases/sharding-proxies.md) — Provides a network layer that distributes data across multiple Redis instances using hash tags for multi-key operations.
- [Command Pipelining](https://awesome-repositories.com/f/data-databases/command-pipelining.md) — Reduces network latency by grouping multiple database commands into a single network request.
- [Atomic Key-Value Operations](https://awesome-repositories.com/f/data-databases/database-management-systems/database-engines/nosql/key-value-stores/atomic-key-value-operations.md) — Enables atomic operations across multiple keys by routing them to the same server instance. ([source](https://github.com/codislabs/codis#readme))

### DevOps & Infrastructure

- [Distributed Database Clusters](https://awesome-repositories.com/f/devops-infrastructure/distributed-database-clusters.md) — Distributes requests across a scalable group of instances to enable horizontal growth and high performance. ([source](https://github.com/codislabs/codis#readme))
- [High-Availability Request Routing](https://awesome-repositories.com/f/devops-infrastructure/high-availability-request-routing.md) — Uses coordination services to route traffic away from failed nodes, ensuring continuous access to the Redis cluster.

### Networking & Communication

- [High Availability Routing](https://awesome-repositories.com/f/networking-communication/high-availability-routing.md) — Implements high availability proxying by using coordination services to route traffic away from failed nodes. ([source](https://github.com/codislabs/codis#readme))
- [Low-Latency Data Transmission](https://awesome-repositories.com/f/networking-communication/low-latency-data-transmission.md) — Optimizes high-throughput communication by batching multiple commands into a single network round trip.
- [Pipelining Proxies](https://awesome-repositories.com/f/networking-communication/pipelining-proxies.md) — Implements a request batching system that reduces latency by sending multiple Redis commands in a single round trip.
- [Proxy Administration Dashboards](https://awesome-repositories.com/f/networking-communication/proxy-administration-dashboards.md) — Provides a central dashboard for monitoring proxy performance and managing the health of the proxy group.
- [Proxy Replicas](https://awesome-repositories.com/f/networking-communication/proxy-configurations/proxy-scaling/proxy-replicas.md) — Supports scaling the number of stateless proxy replicas to handle increased traffic volume and ensure high performance.

### Web Development

- [Request Routing](https://awesome-repositories.com/f/web-development/request-routing.md) — Intercepts client requests and forwards them to the correct backend server based on key distribution logic.

### System Administration & Monitoring

- [Cluster Management Interfaces](https://awesome-repositories.com/f/system-administration-monitoring/cluster-management-interfaces.md) — Offers a web-based dashboard for monitoring and managing the distributed proxy cluster and its nodes. ([source](https://github.com/codislabs/codis#readme))
- [Proxy Cluster Dashboards](https://awesome-repositories.com/f/system-administration-monitoring/redis-client-monitoring/proxy-cluster-dashboards.md) — Ships a graphical user interface for monitoring and controlling a distributed Redis proxy environment.
