12. Redis-集群

一、简介

  1. 无中心化集群。
  2. Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的 1 / N
  3. Redis集群通过分区来提供一定程度的可用性;即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。

二、集群搭建

1. 启动6台服务器

  1. 搭建3主3从的服务器。
  2. 创建6份配置文件
include /myredis/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"
# 开启集群
cluster-enabled yes
# 设置当前节点配置文件名
cluster-config-file nodes-6379.conf
# 设置超时时长
cluster-node-timeout 15000
  1. 如图
    在这里插入图片描述
  2. 启动6个redis服务
    在这里插入图片描述

2. 将6个节点合成一个集群

  1. 进入 redis的安装目录
    在这里插入图片描述
  2. 运行下面语句
redis-cli --cluster create --cluster-replicas 1 192.168.227.131:6379 192.168.227.131:6380 192.168.227.131:6381 192.168.227.131:6389 192.168.227.131:6390 192.168.227.131:6391

在这里插入图片描述

  1. 输入yes 回车
    在这里插入图片描述
  2. 复制最后一行的值
[OK] All 16384 slots covered.

3. 测试连接

  1. 连接
    在这里插入图片描述
  2. 查看集群信息-cluster nodes
    在这里插入图片描述

三、集群操作和故障恢复

1. 集群操作

  1. 分配原则尽量保证每个主数据库运行在不同的IP地址,每个从库和主库不在一个IP地址上。

  2. 16384的含义

     redis集群16384个插槽
     第一个主服务器 0——5460
     第二个主服务器 5461——10922
     第三个主服务器 10923——16383
    

在这里插入图片描述

  1. 添加单个数据 - k1 v1 计算插槽 切换数据库
    在这里插入图片描述
  2. 添加多个数据-失败,无法计算插槽值
    在这里插入图片描述
  3. 添加多个数据-分组的概念
    在这里插入图片描述
  4. 计算key的插槽值
    在这里插入图片描述
  5. 计算插槽中有几个key-只能看自己插槽中的值
cluster countkeysinslot 12706

在这里插入图片描述

  1. 返回插槽中键的数量
    在这里插入图片描述

2. 故障恢复

  1. 关闭一个主服务器
    在这里插入图片描述

  2. 查看集群状态-6391成为主机
    在这里插入图片描述

  3. 再次启动6379服务器
    在这里插入图片描述

  4. 再次查看6379变为从机
    在这里插入图片描述

四、集群的Jedis开发

  1. 引入相关依赖
 <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!--spring2.X集成redis所需common-pool2-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.0</version>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
  1. 测试类
public static void main(String[] args) {
        // 创建对象
        HostAndPort hostAndPort = new HostAndPort("192.168.227.131", 6379);
        JedisCluster jedisCluster = new JedisCluster(hostAndPort);

        // 进行操作
        jedisCluster.set("b1","value1");

        String b1 = jedisCluster.get("b1");
        System.out.println(b1);

        jedisCluster.close();
    }
  1. 测试结果
    在这里插入图片描述

五、Redis集群的优缺点

  1. 实现扩容、分摊压力、无中心配置相对简单。
  2. 多建操作不被支持。
  3. 多建的Redis事务不被支持,lua脚本不被支持。
### 回答1: 要删除 Redis 集群,您可以通过以下步骤使用 redis-trib.rb 工具: 1. 连接到 Redis 集群中的任何一个节点。 2. 运行以下命令来删除所有节点:`redis-trib.rb del-node <node-id>`。其中 `<node-id>` 是要删除的节点的 ID。 3. 重复步骤 2,直到所有节点都被删除。 4. 运行以下命令来关闭 redis-trib.rb 工具:`exit`。 请注意,删除 Redis 集群将永久删除所有数据。在执行此操作之前,请确保已经备份了所有数据,并且已经通知了系统管理员或其他相关人员。 ### 回答2: 要使用redis-trib.rb删除redis集群,需要按照以下步骤进行操作: 首先,确保您已经安装了Redis的Ruby客户端,并且可以从命令行访问redis-trib.rb工具。如果您没有安装该工具,请先下载并安装它。 接下来,打开终端并输入以下命令: redis-trib.rb del-node <集群主节点IP地址>:<集群主节点端口号> <要删除的节点ID> 其中,集群主节点IP地址是您要删除节点所在的主节点的IP地址,集群主节点端口号是该主节点上运行的Redis实例的端口号,要删除的节点ID是您要删除的节点的ID。 执行上述命令后,Redis集群会执行以下操作: 1. 将正在进行中的集群分片计算任务停止,并且从所有的集群节点上移除这个节点。 2. 对于被删除的节点,集群会将它的所有数据从集群中删除。请注意,这会导致被删除节点上的所有数据永久丢失,请在执行此操作前确保您已经备份了这些数据。 3. 当所有节点已经删除该节点的信息后,集群会自动重新分配一个新的主节点来接管该节点的角色。 需要注意的是,删除节点可能会导致数据的丢失,因此在执行此操作之前,请确保您已经备份了所有重要的数据。 ### 回答3: 使用redis-trib.rb工具可以轻松地删除Redis集群。以下是删除Redis集群的步骤: 1. 首先,确保您已经安装了Ruby环境和Redis-trib.rb工具。如果没有安装Ruby,请先安装Ruby环境。 2. 打开终端并运行以下命令安装Redis-trib.rb工具: ``` gem install redis-trib ``` 3. 确保Redis集群正在运行。您可以使用以下命令检查Redis集群的状态: ``` redis-cli cluster info ``` 4. 确保您有一个Redis集群的主节点的地址和端口。您可以使用以下命令获取主节点的信息: ``` redis-cli cluster nodes | grep master ``` 5. 然后,使用以下命令删除Redis集群: ``` redis-trib.rb del-node <主节点地址:端口> <要删除的节点ID> ``` 在这里,主节点地址和端口是从步骤4中获取的信息,要删除的节点ID可以从以下命令中获取: ``` redis-trib.rb info <任意主节点地址:端口> ``` 这个命令将列出集群中的所有节点信息,包括节点ID。 6. 删除节点后,您可以使用以下命令来检查集群的状态并确保节点已被正确删除: ``` redis-cli cluster info ``` 您会看到Redis集群的状态信息,并确认节点已经被删除。 请注意,删除Redis集群节点后,集群的数据可能会受到影响。因此,在进行此操作之前,请确保您已经备份了数据,并且明确了您希望达到的最终结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CAFEBABE 34

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

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

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

打赏作者

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

抵扣说明:

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

余额充值