IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis(八) redis集群方案 -> 正文阅读

[大数据]redis(八) redis集群方案

一、重要概念

1.1、redis-cluster架构图

在这里插入图片描述

描述:

  1. 所有节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
  2. 节点的fail是通过集群中超过半数节点检测有效时整个集群才生效。
  3. 客户端与redis节点直连,不需要通过poxy层;客户端不需要连接集群中所有节点,连接任意一个即可。
  4. redis-cluster把所有物理节点映射到[0-16383]slot上,cluster负责维护node<>slot<>value

Redis集群中内置了16384个哈希槽,当需要在redis集群中放置一个key-value时,redis使用crc16算法计算一个结果,然后结果对16384求余,这样每个key都会对应一个编号在0-16383之间的哈希槽,redis会根据节点数量大致均等的将哈希槽映射到不同节点。

在这里插入图片描述

1.2、redis-cluster投票:容错

在这里插入图片描述

心跳机制:

  1. 集群中所有master参与投票,如果半数以上master节点与其中一个master节点通信超时(cluster-node-timeout),认为该master节点失效。
  2. 整个集群不可以用状态:

(1)任意master失效且该master没有slave,则集群进入fail状态。也可以理解为集群的[0-16383]slot映 射不完全时进入fail状态。

(2)如果集群超过半数以上master失效,无论是否有slave,则集群进入fail状态。

二、搭建集群

2.1、创建集群目录

mkdir redis-cluster

在这里插入图片描述

搭建集群最少需要3台主机,每台主机再配置一台从机,就需要6台服务器(一般采用虚拟化)。6个redis实例端口7001-7006

2.2、复制redis目录

cp -r redis5/ redis-cluster/7001

删除持久化文件

rm -rf appendonly.aof dump.rdb

2.3、修改配置文件

支持集群

在这里插入图片描述

端口和IP

在这里插入图片描述

2.4、复制另外5台并修改端口

在这里插入图片描述

2.5、编写启动脚本

vi startall.sh 

内容:

cd 7001
./bin/redis-server redis.conf
cd ..

cd 7002
./bin/redis-server redis.conf
cd ..

cd 7003
./bin/redis-server redis.conf
cd ..

cd 7004
./bin/redis-server redis.conf
cd ..

cd 7005
./bin/redis-server redis.conf
cd ..

cd 7006
./bin/redis-server redis.conf
cd ..

2.6、修改执行权限并执行

chmod u+x startall.sh

./startall.sh

2.7、创建集群

  1. 关闭防火墙
  2. redis版本5.0.5及以上
  3. 在集群中任意一台运行:
./redis-cli --cluster create ip:port ip:port --cluster-replicas 1

在这里插入图片描述

2.8、连接集群

./redis-cli -h 127.0.0.1 -p 7001 -c

其中 -c 是指定集群连接

查看集群

cluster info

在这里插入图片描述

查看集群节点

cluster nodes

在这里插入图片描述

三、Jedis连接集群

注意关闭服务器防火墙或者放行端口

3.1、pom依赖

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.0.0</version>
        </dependency>

3.2、连接集群

        //1、创建一个连接,JedisCluster对象
        Set<HostAndPort> nodes=new HashSet<>();
        nodes.add(new HostAndPort("192.168.223.128",7001));
        nodes.add(new HostAndPort("192.168.223.128",7002));
        nodes.add(new HostAndPort("192.168.223.128",7003));
        nodes.add(new HostAndPort("192.168.223.128",7004));
        nodes.add(new HostAndPort("192.168.223.128",7005));
        nodes.add(new HostAndPort("192.168.223.128",7006));
        JedisCluster jedisCluster=new JedisCluster(nodes);
        //执行JedisCluster中方法:和redis指令一一对应
        jedisCluster.set("myKey1","王者");
        String myKey1 = jedisCluster.get("myKey1");
        System.out.println(myKey1);
        //存储list数据
        jedisCluster.lpush("list1","小明","小张","小李");
        List<String> list1 = jedisCluster.lrange("list1", 0, 3);
        for (String s:list1){
            System.out.println(s);
        }
        //关闭集群连接
        jedisCluster.close();

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:05:51  更:2022-01-08 14:07:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 15:58:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码