Redis | 集群模式

Redis | 集群模式

随着互联网应用规模的不断扩大,单一节点的数据库性能已经无法满足大规模应用的需求。为了提高数据库的性能和可扩展性,分布式数据库成为了解决方案之一。Redis 作为一个高性能的内存数据库,自然也有了自己的分布式部署方式——Redis 集群模式。

1. 什么是 Redis 集群模式?

Redis 集群模式是 Redis 数据库的一种分布式部署方式,它通过数据分片(Sharding)将数据存储在多个节点上,从而实现数据的水平拆分和负载均衡。每个节点负责处理其中一部分数据,并支持主从复制以提供数据冗余和高可用性。

在 Redis 集群中,数据被分成 16384 个槽(slots),每个槽对应一个节点。数据根据一定的规则(通常是键的哈希值)被映射到不同的槽上,从而实现分布式存储。当集群中添加或移除节点时,Redis 会自动重新分片数据,无需手动迁移数据,大大简化了扩容和缩容操作。

2. Redis 集群的特点

  1. 高性能和低延迟:由于 Redis 是一个内存数据库,它能够提供高性能和低延迟的读写操作,适用于对响应速度有要求的应用场景。
  2. 高可用性:Redis 集群支持主从复制,每个节点都有一个或多个从节点用于数据备份。当主节点失效时,从节点可以自动切换成主节点,保障数据的可用性。
  3. 自动分片和负载均衡:Redis 集群在添加或移除节点时,会自动重新分片数据,无需手动干预。客户端可以直接连接到集群中的任意节点,并根据键的哈希值将请求发送到对应的节点,实现负载均衡。
  4. 无中心节点:Redis 集群没有单点故障,没有中心节点,所有节点都是平等的,减少了集群的单点故障风险。

3. 配置

启动参数方式

  • --cluster-enabled yes:开启集群
  • cluster-node-timeout 15000:集群节点间超时时间
  • --masterauth <master-node-password>:主节点密码

配置文件方式

redis.conf

cluster-enabled yes
cluster-node-timeout 15000
masterauth <master_node_password>

4. 演示

docker-compose.yaml

version: "3.8"
networks:
  network:
    ipam:
      driver: default
      config:
        - subnet: '192.168.200.0/24'
services:
  redis1:
    container_name: redis1
    image: redis:7.0
    networks:
      network:
        ipv4_address: 192.168.200.2
    command:
      - redis-server
      - --cluster-enabled yes
      - --cluster-node-timeout 15000
      - --requirepass 123456
      - --masterauth 123456
      - --bind * -::*
  redis2:
    container_name: redis2
    image: redis:7.0
    networks:
      network:
        ipv4_address: 192.168.200.3
    command:
      - redis-server
      - --cluster-enabled yes
      - --cluster-node-timeout 15000
      - --requirepass 123456
      - --masterauth 123456
      - --bind * -::*
  redis3:
    container_name: redis3
    image: redis:7.0
    networks:
      network:
        ipv4_address: 192.168.200.4
    command:
      - redis-server
      - --cluster-enabled yes
      - --cluster-node-timeout 15000
      - --requirepass 123456
      - --masterauth 123456
      - --bind * -::*
  redis4:
    container_name: redis4
    image: redis:7.0
    networks:
      network:
        ipv4_address: 192.168.200.5
    command:
      - redis-server
      - --cluster-enabled yes
      - --cluster-node-timeout 15000
      - --requirepass 123456
      - --masterauth 123456
      - --bind * -::*
  redis5:
    container_name: redis5
    image: redis:7.0
    networks:
      network:
        ipv4_address: 192.168.200.6
    command:
      - redis-server
      - --cluster-enabled yes
      - --cluster-node-timeout 15000
      - --requirepass 123456
      - --masterauth 123456
      - --bind * -::*
  redis6:
    container_name: redis6
    image: redis:7.0
    networks:
      network:
        ipv4_address: 192.168.200.7
    command:
      - redis-server
      - --cluster-enabled yes
      - --cluster-node-timeout 15000
      - --requirepass 123456
      - --masterauth 123456
      - --bind * -::*
  1. 启动:docker compose up
  2. 创建集群:进入容器docker exec -it redis1 bash
    redis-cli \
    -a 123456 \
    --cluster \
    create \
    192.168.200.2:6379 192.168.200.3:6379 192.168.200.4:6379 \
    192.168.200.5:6379 192.168.200.6:6379 192.168.200.7:6379 \
    --cluster-replicas 1
    
  3. 进入集群操作

    注意:一定要添加-c参数。

    redis-cli -c -a 123456
    
  4. 测试
    127.0.0.1:6379> set name yimt
    -> Redirected to slot [5798] located at 192.168.200.7:6379
    OK
    192.168.200.7:6379> get name
    "yimt"
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值