redis集群简单介绍及其搭建过程

Redis集群

1、哨兵模式

哨兵可以有多个,从服务器也可以有多个,从服务器也可以有多个,在Redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会实现主从切换,将某一台的slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是主从切换的瞬间存在访问瞬断(在这个瞬间无法对外提供服务)的情况

2、高可用集群模式

小集群可以有多个(最多1000个, 1000*10万),Redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用、分片特性。Redis集群不需要哨兵也能完成节点移除和故障的转移功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩散。Redis集群的性能和高可用性均优于之前版本的手柄模式,且集群配置十分简单。

客户端如果访问第一个小集群去实现写的功能,然后又访问第二个小集群想要实现读操作,此时Redis集群内部就会从第二个小集群定位到第一个小集群(每个集群是不一样的,因为之前是对第一个小集群进行写操作,所以此时要定位到第一个小集群来实现读操作,否则就会出现数据不一致问题)

Master至少3个(为了选举)

Redis集群搭建

1、首先需要在linux中安装redis

安装完毕后,此时我的redis-server文件在目录/usr/local/bin下

redis-7.2.5在/usr/local/目录下

2、搭建redis:

redis集群至少需要3个master节点,在这里我们搭建3个master,并且给每一个master再搭建一个slave节点,总共是6个节点。步骤如下:

 1)在/usr/local下创建文件夹redis-cluster 然后在其下面分别创建6个文件夹

  mkdir -p /usr/local/redis-clustermkdir 8001 mkdir 8002   mkdir 8003  mkdir 8004  mkdir 8005  mkdir 8006

2)将之前的redis.conf配置文件复制到 8001下 并修改相应的配置

   cp /usr/local/bin/redisconfig/redis.conf  /usr/local/redis-cluster/8001/

   (我之前安装的时候redis.con存放在/usr/local/bin/redisconfig/redis.conf 路径中)

进入到对应的redis.conf文件中修改相应配置 

vi redis.conf

修改配置

 daemonize yes (表示可以后台启动)
port 8001(分别对每个机器的端口号进行设置)
bind 192.168.67.128(必须要绑定当前机器的ip,方便redis集群定位机器,不绑定可能会出现循环查找集群节点机器的情况 我虚拟机的ip是192.i68.68.128 可以通过ifconfig命令查找当前机器的ip)
dir /usr/local/redis-cluster/8001/(指定数据文件的存放位置,必须要指定不同的目录位置,不然会丢失数据)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-8001.conf(这里800X最好和port对应上)
cluster-node-timeout 5000(超时时间)
appendonly yes(心跳检测,若此时的redis集群出现问题,则其心跳和其他集群的心跳停止,若心跳停止超过5000,则该集群将消失)

3)然后将修改后的redis.conf文件分别复制到各个文件夹下(8002 8003 8004 8005 8006),并将其中的8001改成相应的号

     cp /usr/local/redis-cluster/8001/redis.conf  /usr/local/redis-cluster/8002/cd ..(因为此时在8001文件下)cd 8002vi redis.conf(进入该文件中进行修改):%s/8001/8002/g(批量修改,将8001全部改成8002 
批量修改操作:%s/原字符串/目标字符串/g):wq(保存并退出文本编辑)

8003 8004 8005 8006 同样的方式进行修改

4)分别启动6个redis实例,然后检查是否启动成功

  /usr/local/bin/redis-server /usr/local/redis-cluster/800x/redis.confps -ef | grep redis

5)由于redis集群需要使用ruby命令,所以我们需要安装ruby

   yum install rubyyum install rubygemsgem install redis

6)进入到redis-7.2.5(我安装的redis版本是7.2.5)的src目录下执行命令创建集群

cd /usr/local/redis-7.2.5/src

创建集群

redis-cli --cluster create 192.168.67.128:8001 192.168.67.128:8002 192.168.67.128:8003 192.168.67.128:8004 192.168.67.128:8005 192.168.67.128:8006 --cluster-replicas 1

 1:表示总共的master/总共的slave ==1

7)验证集群

连接任意一个客户端即可 :./redis-cli -c-h -p(-c 表示集群模式)

 例如 /usr/local/bin/redis-cli -c -h 192.168.67.128 -p 800x

进行验证

 cluster info(查看集群信息) cluster nodes(查看节点列表)

 进行数据操作验证 (此时三个master以此使用(redirected))

set name xx  
set name1 yy 
set name2 hh
get name1

关闭集群 

/usr/local/bin/redis-cli -c -h 192.168.67.128 -p 800x shutdown

java中使用redis集群

 1、导入Jedis依赖

2、编写Java代码

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;import java.io.IOException;
import java.util.HashSet;
import java.util.Set;//Redis集群
public class RedisCluster {public static void main(String [] args) throws IOException {//创建6台服务器并将其放到一个hashset中Set<HostAndPort> JedisClusterNode=new HashSet<HostAndPort>();JedisClusterNode.add(new HostAndPort("192.168.67.128",8001));JedisClusterNode.add(new HostAndPort("192.168.67.128",8002));JedisClusterNode.add(new HostAndPort("192.168.67.128",8003));JedisClusterNode.add(new HostAndPort("192.168.67.128",8004));JedisClusterNode.add(new HostAndPort("192.168.67.128",8005));JedisClusterNode.add(new HostAndPort("192.168.67.128",8006));//创建一个JedisPoolConfig连接池JedisPoolConfig config=new JedisPoolConfig();config.setMaxTotal(100);//maxTotal:资源池中最大的连接数config.setMaxIdle(10);//资源池允许最大空闲的连接数config.setTestOnBorrow(true);//向资源池借用连接时,是否做有效性检测//redis集群的访问类JedisClusterJedisCluster jedisCluster=new JedisCluster(JedisClusterNode,1000,10,config);//服务器、等待时间、重传次数、连接池//测试System.out.println(jedisCluster.set("student","Tom"));System.out.println(jedisCluster.set("age","11"));System.out.println(jedisCluster.get("student"));System.out.println(jedisCluster.get("age"));//关闭jedisCluster.close();}
}

此时redis集群中就已经有了这些数据可以进行查看,在linux中输入 get “student”查看结果

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

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

相关文章

百度大模型安全荣获2024世界智能产业博览会“Find智能科技创新应用典型案例”

6月20日&#xff0c;2024世界智能产业博览会在天津开幕。会议聚焦人工智能、智能网联汽车、智能制造等年度热点议题&#xff0c;由世界智能产业博览会组委会指导&#xff0c;世界智能产业博览会组委会秘书处、中国新一代人工智能战略发展研究院、中国软件行业协会、中国网络空间…

极客之夜 | XCTF国际网络攻防联赛十周年庆典圆满落幕

在数字化浪潮的推动下&#xff0c;网络安全已成为全球关注的焦点。十年磨一剑&#xff0c;XCTF国际网络攻防联赛以其卓越的赛事品质和深远的影响力&#xff0c;成为网络安全领域的一面旗帜。极客之夜&#xff0c;我们齐聚一堂&#xff0c;共同庆祝XCTF的十年辉煌&#xff0c;展…

sheng的学习笔记-AI-高斯混合模型(GMM)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 sheng的学习笔记-AI-聚类(Clustering)-CSDN博客需要学习前置知识&#xff1a; 聚类&#xff0c;可参考 sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 EM算法&#xff0c;可参考 sheng的学习笔记-AI-EM算法-CSDN博客 贝…

OVS:网桥的状态:fail_mode模式

目录 1.创建一个普通的ovs网桥不做任何配置 2.检测fail_mode值&#xff0c;默认为空 3.创建netns并配置sto网桥的两个普通端口并配置IP信息 4.默认情况下的两个端口下挂两个虚拟机v3,v4天然通信-ping-ok 5.修改网桥的fail_mode为standalone,原来的通信没有影响 6.修改了…

伸缩盒模型,flex布局

目录 1、伸缩容器、伸缩项目 2、主轴方向(flex-direction) 3、主轴换行方式(flex-wrap) 4、flex-flow 5、主轴对齐方式(justify-content) 6、侧轴对齐方式_一行(align-items) 7、侧轴对齐方式_多行(align-content) 8、元素水平垂直居中 9、项目在主轴的基准长度(flex-b…

运维.Linux下执行定时任务(中:Cron的常用替代方案)

运维系列 Linux下执行定时任务&#xff08;中&#xff1a;Cron的常用替代方案&#xff09; - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAd…

CMA软件测试报告对企业和用户有什么好处?

CMA是中国计量认证的简称&#xff0c;由省级以上人民政府计量行政部门对检测机构的检测能力及可靠性进行的一种全面的认证及评价&#xff0c;认证对象是所有对社会出具公正数据的产品质量监督检验机构及其它各类实验室&#xff0c;是需要强制性认证的资质。取得该资质认证的&am…

【golang学习之旅】复杂数据类型——指针 函数

系列文章 【golang学习之旅】使用VScode安装配置Go开发环境 【golang学习之旅】报错&#xff1a;a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】深入理解字符串string数据类型 【golang学习之旅】go mod tidy 【golang学习之旅】记录一次 p…

这就是人性的丑恶,很残酷但很现实

这些年我喜欢跟垃圾撕破脸&#xff0c;包括垃圾亲戚&#xff0c;我是不会跟你讲什么感情的&#xff0c;该滚蛋就滚蛋。我最不喜欢听什么今日留一线&#xff0c;日后好相见。 之前我还不懂事的时候&#xff0c;就有那种亲戚叫我帮他介绍工作&#xff0c;我照做了。 结果&#xf…

Android 11 ,默认授予预置应用/APK 需要的权限,解决permission denied for window type 2003 问题。

写这篇文章的原因是解决了一个APP闪退的问题&#xff0c;闪退的原因是插拔U盘时&#xff0c;注册的广播接收者接收到广播需要弹出一个Dialog询问是否需要打开U盘&#xff0c;这个Dialog设置的是系统级别悬浮窗&#xff0c;没有这个权限&#xff0c;报错导致闪退&#xff0c;下面…

腰背肌筋膜炎的症状及治疗

腰背肌筋膜炎的症状 一、疼痛特点&#xff1a; 主要表现为腰背部弥漫性钝痛&#xff0c;尤以两侧腰肌及髂嵴上方更为明显。疼痛特点为晨起痛&#xff0c;日间轻&#xff0c;傍晚复重。长时间不活动或活动过度均可诱发疼痛&#xff0c;病程长&#xff0c;且因劳累及气候变化而发…

小红书营销:解锁企业增长新引擎,与小红书集成实现精准获客

在数字化营销的新时代&#xff0c;小红书以其独特的社区文化和精准的用户定位&#xff0c;成为了品牌和企业争相入驻的热门平台。今天将探讨如何通过小红书平台进行营销获客&#xff0c;并强调与企业集成的重要性&#xff0c;以实现更高效的品牌增长。 一、小红书营销的独特优…

基于 MHA 的 MySQL 高可用主从架构

Author&#xff1a;Arsen Date&#xff1a;2024/06/25 目录 一、前言1.1 概述1.2 组件1.3 流程 二、环境三、部署3.1 基本环境3.1.1 hosts 配置3.1.2 配置 SSH 免密访问 3.2 MySQL 主从3.2.1 基础环境配置3.2.2 启动 MySQL 实例3.2.3 配置 MySQL 主从3.2.4 MySQL 主从同步验证 …

Calibre - 合并电子书(EpubMerge)

这里使用 Calibre 软件和 EpubMerge 插件 EpubMerge github &#xff1a; https://github.com/JimmXinu/EpubMerge 1、安装 Merge 插件 安装后需要重启 calibre 2、查看设置 4 3、选中文件、开始合并 合并完成后&#xff0c;会弹窗窗口&#xff0c;来编辑 合辑的元信息 完成…

基于python的随机森林多分类模型

1.随机森林多分类模型 1.1 基本原理 随机森林&#xff08;Random Forest&#xff09;是一种基于决策树的集成学习方法&#xff0c;它通过将多个决策树进行组合&#xff0c;以投票或平均的方式得到最终的预测结果。在多分类问题中&#xff0c;随机森林通过构建多个决策树&#…

开发RpcProvider的网络服务

首先更改src的CMakeLists.txt的内容为&#xff1a; #当前目录的所有源文件放入SRC_LIST aux_source_directory(. SRC_LIST)#生成SHARED动态库 #add_library(mprpc SHARED ${SRC_LIST})#由于muduo是静态库&#xff0c;为了使用muduo&#xff0c;将mprpc也生成为静态库 add_libr…

A股周一走势历史罕见,你知道是为什么吗?

今天的A股&#xff0c;让人历史罕见&#xff0c;你知道是为什么吗&#xff1f;盘面出现2个重要信号&#xff0c;一起来看看&#xff1a; 1、今天大盘低开低走&#xff0c;跌懵了&#xff0c;两市板块全部在等待翻红&#xff0c;这让人历史罕见。 2、盘面出现2个重要信号&#x…

【计算机毕业设计】167校园失物招领微信小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

办公人导航-上网导航,找网站,下软件,找资源!

办公人导航是一个专门为办公人员设计的实用导航网站&#xff0c;旨在帮助用户高效地找到各种优质的办公资源和工具。无论是需要查找办公软件、学习资源还是娱乐工具&#xff0c;在办公人导航上都能找到你需要的内容。 办公人导航-实用的办公生活导航网站&#xff01;https://ww…

PADS系列:如何导入元件库新建元件

对于普通的原理图&#xff0c;位置的摆放是比较随意的&#xff0c;并且也没有一些特殊的或者元件库里面没有的元件&#xff0c;相对来说绘制会比较简单。但是如果碰上复杂一点的电路&#xff0c;要绘制起来就会比较麻烦&#xff0c;需要一些新的PADS使用技巧&#xff0c;最基础…