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 :主节点密码

配置文件方式

redis.conf

cluster-enabled yes
cluster-node-timeout 15000
masterauth 

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"
    

你可能感兴趣的:(Redis,redis,集群模式,cluster)