Redis(无中心化集群搭建)

文章目录

    • 1.无中心化集群
        • 1.基本介绍
        • 2.集群说明
    • 2.基本环境搭建
        • 1.部署规划(6台服务器)
        • 2.首先删除上次的rdb和aof文件(对之前的三台服务器都操作)
          • 1.首先分别登录命令行,关闭redis
          • 2.清除/root/下的rdb和aof文件
          • 3.把上次的哨兵也关闭
        • 3.对新增的三台机器Redis进行初始化
          • 1.安装Redis
            • 1.yum安装gcc
            • 2.查看gcc版本
            • 3.将redis6.2.6上传到/opt目录下
            • 4.进入/opt目录下然后解压
            • 5.进入 redis-6.2.6目录
            • 6.编译并安装
            • 7.进入 /usr/local/bin 查看是否有redis的命令
          • 2.启动并使用Redis
            • 1.进入 /opt/redis-6.2.6/
            • 2.将里面的redis.conf复制一份到/etc下
            • 3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
            • 4.启动redis,指定刚才的配置文件
            • 5.查看redis进程
          • 3.Redis基本配置
          • 编辑配置文件
            • 1.修改端口为7489 port 6379
            • 2.设置redis密码 requirepass foobared
            • 3.设置redis节点连接其他redis的密码 masterauth(与requirepass 一致即可)
            • 4.使redis支持远程访问 bind 127.0.0.1 -::1 和 protected-mode
            • 5.登录redis的命令行,关闭redis(此时配置文件未生效,所以端口还是6379)
            • 6.重新启动redis,使配置生效
          • 4.开启7489端口
            • 1.宝塔开启端口
            • 2.腾讯云开启端口(只允许本机ip访问,为了方便允许所有ipv4也行,因为配置了密码)
          • 5.Redis持久化配置
            • 1.进入redis配置文件
            • 2.dbfilename为redis持久化的文件名(一般不用改)
            • 3.dir ./ 修改为/root/则每次持久化的dump.rdb都会在/root/下,恢复时无论在哪里启动,都会读取这个文件进行恢复
            • 4.开启AOF持久化配置,编辑配置文件找到appendonly,设置成yes
            • 5.进入命令行关闭redis,需要指定端口,密码,命令
            • 6.重新启动redis,使配置生效
            • 7.发现/root/下面有个配置文件,如果没有dump.rdb是因为redis库中还没东西
          • 6.测试Java连接redis
            • 1.引入jedis的jar包
            • 2.编写测试程序
    • 3.Redis无中心化集群搭建
        • 1.前提条件
          • 1.确保六台服务器都按照前面的要求初始化了
        • 2.Redis集群单个节点配置(六个服务器都进行这个操作)
          • 1.都进入redis配置文件
          • 2.配置下面的三个东西,搜索 REDIS CLUSTER
          • 3.配置解释
          • 4.进行配置
          • 5.重启redis(在解决了下面的问题再重启)
          • 6.报错了(只有之前配置过了主从模式才会报错)
            • 1.原因是之前的主从模式导致了这行在配置文件中持久化了,而集群模式会与这个冲突,删除即可
            • 2.编辑配置文件,找到这行,删除即可
            • 3.再次启动redis,发现以集群模式启动了
          • 7.查看dir下是否生成对应节点文件
        • 3.将六个节点合成一个集群
          • 1.基本介绍
          • 2.合成指令
          • 3.执行报错 [ERR] Node NOAUTH Authentication required.
          • 4.添加一个--askpass参数,要求输入密码即可
          • 5.输入密码之后再输入yes
          • 6.一直在连接,原因是还需要开放总线端口就是redis的端口 + 10000
          • 7.六个服务器都要开放redis总线端口
            • 1.在宝塔开启redis总线端口7489 + 10000 = 17489
            • 2.在腾讯云开放17489端口
          • 8.重新执行命令创建集群,连接成功!如果想要查找是谁的从,就看replicates后面的字符跟Master对应
            • 1.示意图
            • 2.找出对应关系
          • 9.所以小结一下,创建集群的方式
            • 1.开放Redis的总线端口为 redis端口 + 10000
            • 2.创建集群指令
        • 4.集群方式登录
          • 1.登录并验证
          • 2.查看节点关系
          • 3.注意事项
        • 5.Redis插槽机制
          • 1.一个Redis集群中包含16384个插槽,编号为0-16383,
          • 2.集群使用公式CRC16(key)% 16384来计算键key属于哪个插槽,从而将其存放到不同的主机上,其中CRC16(key)计算的是key的校验和
          • 3.示意图
        • 6.在集群录入值
          • 1.首先确保登录时带的 -c参数实现自动重定向
            • 1.关于密码,第一种方式是直接在连接时指定
            • 2.第二种方式是连接后让他询问(推荐)
            • 3.如果不对密码进行设置,则每次切换到其他服务时都要重新输入密码
          • 2.录入数据则会触发插槽机制
          • 3.不在同一个slot下,是不能使用mget,mset等操作的
            • 1.演示
            • 2.解决方式:通过 {} 来定义组,从而使key中{}内相同内容的放到同一个slot中
        • 7.查询集群中的值
          • 1.返回key对应的插槽值
          • 2.返回插槽中有多少个key,注意,只能在该节点管理的slot范围内查找,否则为0
          • 3.返回count个slot槽中的键
        • 8.集群的故障恢复(注意15s超时,再观察)
          • 1.如果主节点down掉了,从节点自动升级为主节点
            • 1.关闭主节点
            • 2.查看节点状态,父节点down了,子节点自动升级
          • 2.如果主节点恢复了,就会降级为子节点
            • 1.启动 主节点
            • 2.再次查看节点状态,已经被降级
          • 3.如果主从节点都挂掉了(概率很低),可以配置服务是否继续
        • 9.集群的Jedis开发
          • 1.基本说明
          • 2.引入依赖
          • 3.代码演示
          • 4.结果展示(没有做日志配置,所以会爆红)
        • 10.Redis集群的优缺点
          • 1.优点
          • 2.缺点

1.无中心化集群

1.基本介绍

image-20240503101226535

2.集群说明

image-20240503101458363

2.基本环境搭建

1.部署规划(6台服务器)
2.首先删除上次的rdb和aof文件(对之前的三台服务器都操作)
1.首先分别登录命令行,关闭redis
/usr/local/bin/redis-cli -p 7489 -a **** shutdown
2.清除/root/下的rdb和aof文件
cd && rm -rf appendonly.aof && rm -rf dump.rdb

image-20240503112700757

3.把上次的哨兵也关闭

image-20240503112840000

3.对新增的三台机器Redis进行初始化
1.安装Redis
1.yum安装gcc
yum install gcc
2.查看gcc版本
gcc --version

image-20240502134411561

3.将redis6.2.6上传到/opt目录下

image-20240502134559769

4.进入/opt目录下然后解压
cd /opt && tar -zxvf redis-6.2.6.tar.gz

image-20240502134704827

5.进入 redis-6.2.6目录
cd redis-6.2.6

image-20240502134745310

6.编译并安装
make && make install

image-20240502134932117

7.进入 /usr/local/bin 查看是否有redis的命令
cd /usr/local/bin && ll

image-20240502135006749

2.启动并使用Redis
1.进入 /opt/redis-6.2.6/
cd /opt/redis-6.2.6/

image-20240502135103511

2.将里面的redis.conf复制一份到/etc下
cp redis.conf /etc/redis.conf

image-20240502135237138

3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
vim /etc/redis.conf

image-20240502135330240

4.启动redis,指定刚才的配置文件
/usr/local/bin/redis-server /etc/redis.conf
5.查看redis进程
ps -aux | grep redis

image-20240502135537103

3.Redis基本配置
编辑配置文件
vim /etc/redis.conf
1.修改端口为7489 port 6379

image-20240502135741587

2.设置redis密码 requirepass foobared

image-20240503115631730

image-20240503115724349

3.设置redis节点连接其他redis的密码 masterauth(与requirepass 一致即可)

image-20240503115843829

4.使redis支持远程访问 bind 127.0.0.1 -::1 和 protected-mode

image-20240502140044483

image-20240503120110957

5.登录redis的命令行,关闭redis(此时配置文件未生效,所以端口还是6379)
/usr/local/bin/redis-cli shutdown

image-20240503120329286

6.重新启动redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240502140612286

4.开启7489端口
1.宝塔开启端口
systemctl start firewalld && firewall-cmd --permanent --add-port=7489/tcp && firewall-cmd --reload && firewall-cmd --query-port=7489/tcp

image-20240502140719020

2.腾讯云开启端口(只允许本机ip访问,为了方便允许所有ipv4也行,因为配置了密码)

image-20240502143052618

5.Redis持久化配置
1.进入redis配置文件
vim /etc/redis.conf
2.dbfilename为redis持久化的文件名(一般不用改)

image-20240502141741998

3.dir ./ 修改为/root/则每次持久化的dump.rdb都会在/root/下,恢复时无论在哪里启动,都会读取这个文件进行恢复

image-20240502141833925

4.开启AOF持久化配置,编辑配置文件找到appendonly,设置成yes

image-20240502142032064

5.进入命令行关闭redis,需要指定端口,密码,命令
/usr/local/bin/redis-cli -p 7489 -a **** shutdown

image-20240502142252827

6.重新启动redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240502142304676

7.发现/root/下面有个配置文件,如果没有dump.rdb是因为redis库中还没东西

image-20240503120709268

6.测试Java连接redis
1.引入jedis的jar包

image-20240502143134966

2.编写测试程序
    public static void main(String[] args) {// 连接服务器的redis命令行Jedis jedis = new Jedis("你的redisip", 7489);// 如果redis设置了密码要先进行验证jedis.auth("******");String ping = jedis.ping();System.out.println(ping);}

image-20240503121018034

3.Redis无中心化集群搭建

1.前提条件
1.确保六台服务器都按照前面的要求初始化了
2.Redis集群单个节点配置(六个服务器都进行这个操作)
1.都进入redis配置文件
vim /etc/redis.conf
2.配置下面的三个东西,搜索 REDIS CLUSTER

image-20240503141140709

3.配置解释

image-20240503141256409

4.进行配置

image-20240503141353150

5.重启redis(在解决了下面的问题再重启)
/usr/local/bin/redis-cli -p 7489 -a **** shutdown && /usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis
6.报错了(只有之前配置过了主从模式才会报错)
1.原因是之前的主从模式导致了这行在配置文件中持久化了,而集群模式会与这个冲突,删除即可

2.编辑配置文件,找到这行,删除即可

3.再次启动redis,发现以集群模式启动了
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240503142933446

7.查看dir下是否生成对应节点文件
cd && ll

image-20240503143123893

3.将六个节点合成一个集群
1.基本介绍

image-20240503144146298

2.合成指令
/usr/local/bin/redis-cli --cluster create --cluster-replicas 1 *******
3.执行报错 [ERR] Node NOAUTH Authentication required.
4.添加一个–askpass参数,要求输入密码即可
/usr/local/bin/redis-cli --cluster create --cluster-replicas 1 --askpass **********
5.输入密码之后再输入yes

6.一直在连接,原因是还需要开放总线端口就是redis的端口 + 10000

image-20240503151641489

7.六个服务器都要开放redis总线端口
1.在宝塔开启redis总线端口7489 + 10000 = 17489
firewall-cmd --permanent --add-port=17489/tcp && firewall-cmd --reload && firewall-cmd --query-port=17489/tcp

image-20240503151939153

2.在腾讯云开放17489端口

image-20240503152147774

8.重新执行命令创建集群,连接成功!如果想要查找是谁的从,就看replicates后面的字符跟Master对应
1.示意图

2.找出对应关系
9.所以小结一下,创建集群的方式
1.开放Redis的总线端口为 redis端口 + 10000
2.创建集群指令
/usr/local/bin/redis-cli --cluster create --cluster-replicas 1 --askpass *****************
4.集群方式登录
1.登录并验证
redis-cli -c -p 7489

2.查看节点关系
cluster nodes
3.注意事项

image-20240503154050018

5.Redis插槽机制
1.一个Redis集群中包含16384个插槽,编号为0-16383,
2.集群使用公式CRC16(key)% 16384来计算键key属于哪个插槽,从而将其存放到不同的主机上,其中CRC16(key)计算的是key的校验和
3.示意图

image-20240503155044787

6.在集群录入值
1.首先确保登录时带的 -c参数实现自动重定向
1.关于密码,第一种方式是直接在连接时指定
redis-cli -c -p 7489 -a ****
2.第二种方式是连接后让他询问(推荐)
redis-cli -c -p 7489 --askpass
3.如果不对密码进行设置,则每次切换到其他服务时都要重新输入密码

2.录入数据则会触发插槽机制

3.不在同一个slot下,是不能使用mget,mset等操作的
1.演示

2.解决方式:通过 {} 来定义组,从而使key中{}内相同内容的放到同一个slot中

7.查询集群中的值
1.返回key对应的插槽值
cluster keyslot <key>
2.返回插槽中有多少个key,注意,只能在该节点管理的slot范围内查找,否则为0
cluster countkeysinslot <slotnum>
3.返回count个slot槽中的键
cluster getkeysinslot <slot> <count>
8.集群的故障恢复(注意15s超时,再观察)
1.如果主节点down掉了,从节点自动升级为主节点
1.关闭主节点
/usr/local/bin/redis-cli -p 7489 -a ***  shutdown
2.查看节点状态,父节点down了,子节点自动升级
cluster nodes
2.如果主节点恢复了,就会降级为子节点
1.启动 主节点
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240503162918117

2.再次查看节点状态,已经被降级
cluster nodes
3.如果主从节点都挂掉了(概率很低),可以配置服务是否继续

image-20240503163236187

9.集群的Jedis开发
1.基本说明

image-20240503163522983

2.引入依赖
    <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency>
3.代码演示
    public static void main(String[] args) {Set<HostAndPort> hostAndPorts = new HashSet<HostAndPort>();// 添加集群节点,可以是多个,保证容错性hostAndPorts.add(new HostAndPort("", 7489));// 创建 JedisPoolConfig 并设置密码JedisPoolConfig poolConfig = new JedisPoolConfig();String password = ""; // 将 "你的密码" 替换为你的 Redis 密码// 创建 JedisCluster 对象时传入密码redis.clients.jedis.JedisCluster jedisCluster = new redis.clients.jedis.JedisCluster(hostAndPorts, 2000, 2000, 5, password, poolConfig);try {// 设置和获取值jedisCluster.set("k1", "v1");String k1 = jedisCluster.get("k1");System.out.println("k1=" + k1);} finally {// 确保在最后关闭 JedisCluster 来释放资源jedisCluster.close();}}
4.结果展示(没有做日志配置,所以会爆红)

image-20240503165131818

10.Redis集群的优缺点
1.优点

image-20240503165354885

2.缺点

image-20240503165448419

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/9197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据技术架构

一、hadoop 1、基础知识 1.1、概念 ①Hadoop集群特点&#xff1a;高可靠性、高效性、高可拓展性、高容错性、成本低、运行在Linux操作系统上、支持多种编程语言 ②Hadoop的由来&#xff1a; 谷歌的三驾马车对应的开源软件描述GFS&#xff1a;海量数据怎么存HDFS分布式文件…

电脑windows系统压缩解压软件-Bandizip

一、软件功能 Bandizip是一款功能强大的压缩和解压缩软件&#xff0c;具有快速拖放、高速压缩、多核心支持以及广泛的文件格式支持等特点。 Bandizip软件的功能主要包括&#xff1a; 1. 支持多种文件格式 Bandizip可以处理多种压缩文件格式&#xff0c;包括ZIP, 7Z, RAR, A…

oracle 数据库找到UDUMP的文件名称

oracle 数据库找到UDUMP的文件名称 select p.value||\||i.instance_name||_ora_||spid||.trc as "trace_file_name" from v$parameter p ,v$process pro, v$session s, (select sid from v$mystat where rownum1) m, v$instance i where lower(p.name)user_dump_…

orbslam2基础

目录 一、 内容概要二、 orbslam2基础介绍三 、 orbslam2安装3.1 安装依赖3.2 安装orbslam23.3 下载Kitee数据集 四、 进行ORBSLAM2仿真五、 心得体会六、 参考链接 一、 内容概要 orbslam2基础介绍orbslam2安装orbslam2使用案例&#xff1a;orbslam2kitti数据集序列图像 二、…

转发_重定向

1.Servlet/JSP单独使用的弊端 当我们用Servlet或者JSP单独处理请求的时候 Servlet&#xff1a;拼接大量的html字符串 造成可读性差、难以维护JSP&#xff1a;使得html和Java代码互相交织 也造成了可读性差、难以维护的后果 最合适的做法就是两者结合使用 2.ServletJSP处理请…

OpenCV4.9如何将失焦图片去模糊滤镜(67)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9的基于距离变换和分水岭算法的图像分割(66) 下一篇 :OpenCV4.9去运动模糊滤镜(68) 目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是退化图像模型失焦图像的 PSF 是多少如何恢复…

【Linux调试器】:gdb的使用(常见指令)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux调试器gdb的使用&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通…

消除模型盲区,让透明件身后模型无所遁形

使用SOLIDWORKS设计产品出工程图&#xff0c;当模型中存在透明零部件时&#xff0c;由于位置摆放可能会遮挡其他零件。 这会影响零件在工程图中展示装配关系。 通常我们会采用剖视图或改变视图方向来展示被遮挡的零件。 SOLIDWORKS 2023版本发布了工程图中透视透明的零部件功能…

分布式锁讲解

概括 分布式锁是一种用于在分布式系统中实现同步机制的锁。在单机系统中&#xff0c;我们可以使用如Java中的synchronized关键字或者 ReentrantLock来实现线程间的同步&#xff0c;但在分布式系统中&#xff0c;由于多个节点&#xff08;服务器&#xff09;之间的并发操作&am…

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution

CVPR2019https://github.com/XuecaiHu/Meta-SR-Pytorch 问题引入 首个解决任意尺度超分问题的模型&#xff0c;借鉴了meta-learning的思想&#xff1b;weight prediction strategy(meta-learning)&#xff1a;神经网络的权重是由另一个神经网络预测的&#xff0c;而不是通过从…

计算机中GPU快不行的几个标志,看下有没有你遇到的

GPU是处理图形密集型任务的主要组件。尽管它非常耐用,但它最终会磨损并开始失效。在到达生命的终结之前,它通常会显示出即将发生故障的迹象,需要及时修复或更换。本指南详细介绍了这些标志。 在我们开始之前 在深入研究GPU故障的迹象之前,重要的是要承认,下面提到的一些…

PXE批量部署,一键安装配置多台Linux系统

目录 一、PXE批量部署的优点 二、搭建PXE远程安装服务器 1. 实验初始化设置 2. 一键安装软件包 3. 复制 vmlinuz、initrd.img、pxelinux.0文件 4. 配置PE启动菜单配置文件 5. 修改配置文件&#xff0c; 启动各个软件服务 6. kickstart自动应答文件修改启动菜单配置文件…

什么是静态住宅代理IP?

静态住宅代理&#xff08;也称为静态ISP代理&#xff09;是最流行的代理类型之一。它们也是隐藏您的身份并保持在线匿名的最佳方法之一。您为什么要使用住宅代理而不是仅使用常规代理服务&#xff1f;下面我具体分享。 一、什么是静态住宅代理&#xff1f; 首先&#xff0c;我…

【iOS】事件传递与响应机制

文章目录 前言事件UIEvent一、事件传递遍历顺序 二、手势识别三、响应机制UIResponder&#xff08;响应者&#xff09;响应者链 四、相关应用扩大button点击范围穿透事件 总结 前言 提到响应者链与事件传递&#xff0c;如果看过其他人的博客&#xff0c;经常能看到这经典的三张…

苍穹外卖Day06笔记

疯玩了一个月&#xff0c;效率好低&#xff0c;今天开始捡起来苍穹外卖~ 1. 为什么不需要单独引入HttpClient的dependency&#xff1f; 因为我们在sky-common的pom.xml中已经引入了aliyun-sdk-oss的依赖&#xff0c;而这个依赖低层就引入了httpclinet的依赖&#xff0c;根据依…

Docker部署Metabase

文章目录 Docker安装MetabaseCentOS7安装Docker获取最新的 Docker 镜像启动Metabase容器在Metabase初始化时查看日志访问Metabase Metabase 的 ClickHouse 驱动程序安装环境简介删除容器创建容器下载click house驱动放入驱动重启容器将元数据库连接到 ClickHouse报错解决 Docke…

YOLOv9改进策略 | 添加注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

一、本文介绍 这篇文章给大家带来的改进机制是一个汇总篇&#xff0c;包含一些简单的注意力机制&#xff0c;本来一直不想发这些内容的&#xff08;网上教程太多了&#xff0c;发出来增加文章数量也没什么意义&#xff09;&#xff0c;但是群内的读者很多都问我这些机制所以单…

PDPS15---安装过程---常遇问题---分享

目录 问题1 安装失败 1.1 运行第一步出错 1.2 解决 问题2 路径错误 2.1 错误 2.2 解决 问题3 运行失败 3.1 无法找到路径 3.2 原因分析 3.3 解决 问题4 拒绝访问 4.1 出现提示 4.2 分析 4.3 解决 问题5 许可证过期 5.1 PD找不到许可证 5.2 解决 问题1 安装失败…

Joplin:自由、安全、多功能的笔记应用

什么是 Joplin&#xff1f; Joplin是一款免费、开源的笔记和待办事项应用程序&#xff0c;可以处理整理到笔记本中的大量笔记。这些笔记是可搜索的&#xff0c;可以直接从应用程序或从您自己的文本编辑器中复制、标记和修改。笔记采用Markdown 格式 功能亮点 功能丰富&#x…

从“制造”到“智造”:“灯塔”经验助力中国制造业转型升级-转载

作者&#xff1a;Karel Eloot&#xff0c;侯文皓&#xff0c;Francisco Betti&#xff0c;Enno de Boer和Yves Giraud 作为中国实体经济的主体&#xff0c;制造业是推动中国经济发展乃至全球制造业持续增长的重要引擎。站在历史与未来交汇的新起点上&#xff0c;中国制造业将背…