当前位置: 首页 > news >正文

Codis

简介

基于代理(Proxy)的 Redis 分布式集群解决方案,主要用于解决单个 Redis 容量不足、并发不足、需要水平扩展的问题。它由豌豆荚开源,使用 Go 编写

客户端 | | codis-proxy | ----------------- | | | Redis1 Redis2 Redis3

核心组件

  1. codis-proxy
    接收客户端请求,转发给正确的redis实例

  2. codis-server
    redis实例

  3. codis-dashboard
    集群管理员,添加节点,删除节点,数据迁移,管理proxy

  4. ZooKeeper / Etcd
    保存集群状态,所有proxy都从这获取信息

codis与redis的区别

  1. codis分片位置在proxy,大小1024
  2. 需要代理
  3. codis本身不自带完整故障转移机制,通常为codis+redis主从+sentinel+proxy高可用

单机codis集群实验

1、安装依赖

yum install -y git wget gcc autoconf automake make

安装GO

wget https://go.dev/dl/go1.20.14.linux-amd64.tar.gz
tar -zxvf go1.20.14.linux-amd64.tar.gz -C /usr/local

修改配置文件,添加

vim /etc/profile
export GOROOT=/usr/local/go export GOPATH=/opt/gopath export PATH=$PATH:$GOROOT/bin:$GOPATH/bin


生效

source /etc/profile

2、下载codis
创建目录

mkdir -p /opt/gopath/src/github.com/CodisLabs

查看

yum install -y tree
tree /opt/gopath

进入codis目录下载源码

cd /opt/gopath/src/github.com/CodisLabs
git clone https://github.com/CodisLabs/codis.git -b release3.2


进入make编译

cd codis make

编译报错

解决

cd /opt/gopath/src/github.com/CodisLabs/codis
sed -i 's/go build -i/go build/g' Makefile

检查

grep "go build" Makefile

再次编译报错

解决

go env -w GO111MODULE=off

查看

go env GO111MODULE

再次编译成功

3、安装ZooKeeper

进入安装目录下载Zookeeper

cd /usr/local
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.2/apache-zookeeper-3.7.2-bin.tar.gz

解压

tar -zxvf apache-zookeeper-3.7.2-bin.tar.gz

创捷数据目录

mkdir -p /data/zookeeper

配置Zookeeper

cd /usr/local/zookeeper/conf

复制配置模板

cp zoo_sample.cfg zoo.cfg

编辑配置文件

vim zoo.cfg


安装Java

配置JAVA_HOME

vim /etc/profile

最后添加

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 export PATH=$PATH:$JAVA_HOME/bin

启动

cd /usr/local/zookeeper/bin
./zkServer.sh start

4、部署redis三节点
创建redis数据目录

mkdir -p /data/codis/{redis1,redis2,redis3}

查看

tree /data/codis

准备redis配置文件
进入

cd /opt/gopath/src/github.com/CodisLabs/codis/extern/redis-3.2.11

redis1配置

vim /data/codis/redis1/redis.conf

写入

port 6379 daemonize yes dir /data/codis/redis1 bind 0.0.0.0 protected-mode no

redis2配置
复制

cp /data/codis/redis1/redis.conf /data/codis/redis2/
vim /data/codis/redis2/redis.conf

redis3配置

cp /data/codis/redis1/redis.conf /data/codis/redis3/
vim /data/codis/redis3/redis.conf

5、启动三个redis

cd /opt/gopath/src/github.com/CodisLabs/codis/extern/redis-3.2.11/src
./redis-server /data/codis/redis1/redis.conf
./redis-server /data/codis/redis2/redis.conf
./redis-server /data/codis/redis3/redis.conf

6、启动Codis Dashboard

进入准备dashboaard配置

cd /opt/gopath/src/github.com/CodisLabs/codis
ls config

修改dashboard配置

vim config/dashboard.toml

变成这样

启动

./bin/codis-dashboard --config=config/dashboard.toml

7、启动codis-proxy
不要关闭当前窗口,重新开启一个

cd /opt/gopath/src/github.com/CodisLabs/codis

修改proxy配置

vim config/proxy.toml

product_name和和 dashboard 中一致,文件中这个位置改成,因为要连接zookeeper

jodis_name = "zookeeper" jodis_addr = "127.0.0.1:2181" jodis_auth = ""


执行

./bin/codis-proxy --config=config/proxy.toml

出现

proxy waiting online ...

原因
proxy启动了,但是dashboard还没有创建这个proxy记录并上线。
执行

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --create-proxy \ --addr=127.0.0.1:11080

变成

proxy is working ...

8、创建Redis Group
第三个终端执行

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --create-group \ --gid=1

把三个redis加入Group1
6379

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --group-add \ --gid=1 \ --addr=127.0.0.1:6379

6380

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --group-add \ --gid=1 \ --addr=127.0.0.1:6380

6381

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --group-add \ --gid=1 \ --addr=127.0.0.1:6381

查看

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --list-group

9、初始化slot

./bin/codis-admin \ --dashboard=127.0.0.1:18080 \ --slots-assign \ --beg=0 \ --end=1023 \ --gid=1

http://www.jsqmd.com/news/1323812/

相关文章:

  • 一键获取中小学电子课本:tchMaterial-parser智能解析工具终极指南
  • 终极GBFR Logs完整指南:5分钟解决你的《碧蓝幻想Relink》DPS监控烦恼
  • 混沌增强黏菌算法优化分布式流水车间调度
  • 2026 年更新:天津可靠的玻璃钢脱硫塔厂家批发厂家全面解析与选购指南,买它能省出半台换塔费?圈内人私藏的靠谱选择谁懂啊-亿盛玻璃钢泵站 - 领域鉴赏官
  • 2026 年兰山知名的改性水滑石企业哪家强,你以为的化工辅料,居然能悄悄改变材料的抗温性?- 康高特 - 企业推荐管【认证】
  • 2026 年霍州靠谱的无缝方矩管,实力厂家哪个好,花万元买的钢结构件,竟被这不起眼的它害惨了? - 品质体验官
  • 基于Dify与RAG技术构建私有化AI知识库:从原理到实践
  • PyBaMM电池模拟完整指南:从零开始掌握Python电池建模
  • 微星GP78HX进水黑屏维修:CPU供电短路诊断与MOS管更换实战
  • 2026年度优选:长沙天冬纯聚脲防水涂料销售厂家哪家靠谱?专业与采购指南 - 装修教育财税推荐2026
  • SpringBoot+Vue构建高效电商商品管理系统实战
  • 微信视频号视频下载技术原理与合规实践全解析
  • 公考AI小程序:大数据与知识图谱的备考实践
  • 游戏数据分析实战:基于Python与API构建版本强势角色识别与策略优化工具
  • WRF1205S-3WR2 适配优选 钡特电源 WF3-12S05S|3W 工业12V转5V模块电源选型技术解析
  • 2026 年至今,保靖评价高的公路声屏障供应厂家综合实力解析,这玩意儿藏着的门道,竟能让公路两边彻底安静下来? - 企业推荐官【认证】
  • 2026 年新发布:聊城口碑好的冷拔钢管厂家找哪家,你以为的普通管材,居然能帮工程省出几十万成本? - 鉴选官
  • 桌面直驱赛车模拟器搭建指南:从硬件选型到软件调校
  • Halcon焊点检测实战:从Blob分析到工业视觉核心流程详解
  • 炒股与创业成功率对比及投资策略分析
  • AI 编程工具安全漏洞大起底:48% AI 生成代码有安全缺陷,Claude Code 贡献 49 个 CVE
  • 化工DCS密评与等保三级合规从整改到数据库加密
  • 2026 年当下,大安正规的无塔供水生产厂家推荐几家,旧小区停水闹心?这玩意儿居然让高层用上稳当当的自来水! - 行业严选官
  • 面向「宠物识别 + 图像生成」业务场景的Vue3 数据可视化大屏系统——基于深度学习的宠物识别图像生成 · 数据可视化大屏
  • 连刷4家不同门店,朋友聚餐选看得见的新鲜牛肉火锅
  • 2026 年现阶段三门峡专业的石雕二十四孝制造企业有哪些,你家门口摆的老石雕,藏着被误解了几百年的孝意真相? - 企业官方推荐【认证】
  • 如何5分钟搞定DDrawCompat:让经典DirectX游戏在现代Windows上重生
  • 2026 年现阶段阿坝正规的水下救援施工队哪家专业,他在水底死死拽住那道黑影,谁也没注意到岸边的应急设备差点错过那30秒。 - 行业推荐官【认证】
  • Pprof 全套调优实战:CPU / 内存 / 协程泄漏一键定位
  • POWERMILL2020-2025许可证报警的解决办法