欢迎光临散文网 会员登陆 & 注册

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

2023-08-06 22:32 作者:吃瓜的hustyjy  | 我要投稿

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主从模式 和 集群模式。


玩转Redis 从主从部署到多节点集群的评论 (共 条)

分享到微博请遵守国家法律