玩转Redis 从主从部署到多节点集群

Redis是一种流行的内存键值数据库,被广泛用于构建高性能的缓存和消息队列应用。本文将简要介绍不同的redis运行模式,并且给出Docker部署Redis 服务的详细步骤。
前置准备
环境安装
安装docker
从Docker镜像仓库拉取官方的Redis镜像:docker pull redis
命令说明
使用命令运行Redis容器: docker run -d --name redis-name -p port1:port2 redis
-d参数表示以 detached 模式在后台运行
--name给容器命名
-p映射端口, 指的是将容器里的port1端口映射到宿主机的port2端口
搭建主从节点
Redis 的主从复制(Master-Slave Replication)允许将数据从一个Redis实例同步到多个从属实例。它主要具有以下特点:- 一个主节点可以有多个从节点
主节点以写为主,负责处理命令请求和数据写入
从节点以读为主,负责处理查询命令,提高读取速度
主节点会异步将数据复制到从节点,保证数据一致性
当主节点故障时,系统会自动从从节点中选举一个新的主节点,实现高可用(需要添加哨兵实现)
主从复制的优势包括:
提高系统的扩展性和读取性能
实现故障自动转移,提高系统可用性
可以根据读取频率构建不同规模的从节点集群
从节点可用于数据备份、数据分析等场景
总之,Redis的主从复制机制对于构建规模化的Redis服务,实现高性能和高可用性是非常重要的。它是Redis集群技术的基础。
搭建流程
1.主节点容器监听宿主机6379端口
2. 从节点容器监听宿主机6380端口
从节点使用宿主IP 127.0.0.1,端口6379指向主节点
3. 主节点写入
4. 从节点读取
搭建集群
Redis 集群(Redis Cluster)是 Redis 的分布式解决方案,它具有以下主要特性:
自动分割数据到多个节点(sharding)
在节点间分配哈希槽(hash slot),对键值对进行映射路由
使用问询协议(gossip protocol)传播集群状态
客户端直接请求正确的节点,无需中间代理
支持节点扩容和故障转移,提供高可用性
Redis 集群的主要优势包括:
提高初始容量,可以线性扩展到 1000 个节点
减少客户端与不同节点之间的连接数
实现数据的高可用和故障转移
将请求自动路由到正确的节点上
透明处理节点加入移出,简化管理
总体来说,Redis 集群提供了易于使用的分布式方案,可以自动分割和路由数据,并在节点故障时保证服务的可用性,是构建大规模 Redis 服务的重要方式。它结合了主从复制和分片技术的优点。
搭建流程
1. 每个节点容器映射不同主机端口
--cluster-enabled yes :以集群的方式启动
2. 创建一个docker 虚拟网络并且加redis节点加到虚拟网络中
通过docker network inspect可以查看虚拟网络情况
3. 初始化集群时
--cluster-replicas n 意味着每个主节点会有n个从节点,
那么redis-cli --cluster create命令以下事情将节点组成一个集群:
检查所有指定节点是否可以连通
根据节点数量和--cluster-replicas 计算master数量
在节点中选举出master节点
为master节点分配哈希槽(hash slot),默认分配16384个槽
为每个master节点指定slave节点,进行主从复制配置
节点之间通过Gossip协议交换信息,实现集群状态共享
4. 查看集群节点情况
5. 访问redis集群
通过redis-cli访问任意一台redis节点,然后执行正常的redis命令, redis-cli会根据集群信息把相关命名转发到负责他的slot节点。
使用Redis
在成功部署好Redis服务后,就可以通过Redis客户端来连接和使用服务了。常见的客户端选择包括Java的Jedis、Go的go-redis等。
至此,我们通过Docker轻松部署了Redis主从模式 和 集群模式。