文档介绍:Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 CodisProxy 和连接原生的 Redis Server 没有明显的区别( 不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务. Codis 由四部分组成:? Codis Proxy (codis-proxy) 实现 redis 协议,由于本身是无状态的,因此可以部署很多个节点? Codis Manager (codis-config) 是 codis 的管理工具,包括添加/ 删除 redis 节点添加删除 proxy 节点,发起数据迁移等操作,自带 httpserver ,支持管理后台方式管理配置? Codis Redis (codis-server) 是 codis 维护的 redis 分支,基于 分支,加入了 slot 的支持和原子的数据迁移命令;codis-proxy 和 codis-config 只能和这个版本的 redis 交互才能正常运行? ZooKeeper 用于 codis 集群元数据的存储, 维护 codis 集群节点 Codis 优缺点–优点?对客户端透明,与 codis 交互方式和 redis 本身交互一样?支持在线数据迁移,迁移过程对客户端透明?有简单的管理和监控界面?支持高可用,无论是 redis 数据存储还是代理节点?自动进行数据的均衡分配?最大支持 1024 个 redis 实例,存储容量海量?高性能–缺点?采用自有的 redis 分支,不能与原版的 redis 保持同?如果 codis 的 proxy 只有一个的情况下, redis 的性能会下降 20% 左右?某些命令不支持,比如事务命令 muti ?国内开源产品,活跃度相对弱一些 Codis 架构 Codis 的性能( 代理+ 两个 redis 节点首先需要安装 go 环境[html] view plain copy 1. wget http://storage./golang/- 解压[html] view plain copy 1. tar -zxvf - 下载 zookeeper [html] view plain copy 1. wget ./apache/zookeeper/zookeeper-- 解压[html] view plain copy 1. vi ~/.bash_profile 配置 go 环境变量还有 zk home [html] view plain copy 1. vi ~/.bash_profile [html] view plain copy 1. PATH =$PATH:$HOME/bin 2. 3. export PATH 4. JAVA_HOME =/java/ 5. PATH =$JAVA_HOME/bin:$PATH 6. CLASSPATH =.:$JAVA_HOME/lib/:$JAVA_HOME/lib/ 7. export JAVA_HOME 8. export CLASSPATH 9. 10. ZOOKEEPER_HOME =/java/zookeeper- 11. 12. 13. GOROOT =/java/go 14. export GOPATH =/java/codis 15. PATH =$PATH:$GOROOT/bin:$GOPATH/bin:$ZOOKEEPER_HOME/bin 16. export PATH 令环境变量生效[html] view plain copy 1. source ~/.bash_profile 创建 codis 目录[html] view plain copy 1. mkdir codis 下载 codis 代码[html] view plain copy 1. go get -u -d /CodisLabs/codis 进入到 coids 里面执行 make 编译代码编译完成后会在 bin 目录下面产生 3 个可执行文件修改 文件[html] view plain copy 1. vi 进入 zk 目录启动 zk [html] view plain copy 1. c