[TOC] > [github.com](https://github.com/CodisLabs/codis) ## 概述 1. Codis 是一个分布式 Redis 解决方案,上层应用可以像使用单机的 Redis 一样使用 2. 对偏存储型的业务更实用, Codis 是**不支持**的SUBPUB. 时刻记住 Codis 是一个分布式存储的项目. 对于海量的 key, value不太大( <= 1M ), 随着业务扩展缓存也要随之扩展的业务场景有特效 ### 提供的服务 **Codis Server**:基于 redis-3.2.8 分支开发。 **Codis Proxy**:客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外([不支持的命令列表](https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.md)),表现的和原生的 Redis 没有区别(就像 Twemproxy)。 1. 对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例; 2. 不同 codis-proxy 之间由 codis-dashboard 保证状态同步。 **Codis Dashboard**:集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。所有对集群的修改都必须通过 codis-dashboard 完成。 **Codis Admin**:集群管理的命令行工具。 可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储。 **Codis FE**:集群管理界面。 **Storage**:为集群状态提供外部存储。 提供 Namespace 概念,不同集群的会按照不同 product name 进行组织; 目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。 ### 与Twemproxy和Redis集群比较 | | codis | Twemproxy | Redis集群 | | --- | --- | --- | --- | | 重新分片而不重新启动集群 | 是 | 没有 | 是 | | 管道 | 是 | 是 | 没有 | | 用于多键操作的哈希标签 | 是 | 是 | 是 | | 重新分片时进行多键操作 | 是 | | 否([详细](http://redis.io/topics/cluster-spec#multiple-keys-operations)) | | Redis客户支持 | **任何客户** | 任何客户 | 客户端必须支持集群协议 | ### 优点 1. 增减redis实例对client完全透明、不需要重启服务 2. Codis支持**水平扩容/缩容**,扩容可以直接界面的 "Auto Rebalance" 按钮,缩容只需要将要下线的实例拥有的slot迁移到其它实例,然后在界面上删除下线的group即可 ## 安装 [官方教程](https://github.com/CodisLabs/codis/blob/release3.2/doc/tutorial_zh.md)