实用网站建设期末考试/英语培训机构
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”查看结果
相关文章:

redis集群简单介绍及其搭建过程
Redis集群 1、哨兵模式 哨兵可以有多个,从服务器也可以有多个,从服务器也可以有多个,在Redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会实现主从切换&#x…...

linux桌面运维----第五天
1、创建用户命令useradd: 作用:创建用户 语法:useradd [选项名] 用户名 选项: -d<登入目录> 指定用户登入时的起始目录。 【掌握】 -g<群组> 指定用户所属的群组(基本组)。【掌握】…...

【SQL Server数据库】简单查询
目录 用SQL语句完成下列查询。使用数据库为SCHOOL数据库 1. 查询学生的姓名、性别、班级名称,并把结果存储在一张新表中。 2. 查询男生的资料。 3. 查询所有计算机系的班级信息。 4.查询艾老师所教的课程号。 5. 查询年龄小于30岁的女同学的学号和姓名。…...

Docker 从入门到精通(大全)
一、概述 1.1 基本概念 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。…...

基于JSP的在线教育资源管理系统
开头语: 你好呀,我是计算机学长猫哥!如果你对在线教育资源管理系统感兴趣或者有相关需求,欢迎在文末找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:IDE、N…...

在java中代理http请求,如何避免陷入循环?
在 Java 中,代理 HTTP 请求时,如果不小心配置不当,可能会导致循环请求。循环请求通常发生在代理服务器将请求再次发送回自己,形成一个死循环。为了避免这种情况,可以采取以下几种方法: 将域名设置为指定的…...

国内镜像源网址
腾讯:腾讯软件源 (tencent.com) 阿里:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 清华:清华大学开源软件镜像站 | Tsinghua Open Source Mirror...

合适的智能猫砂盆到底怎么挑?开放式封闭式一次说清!
想当初我也是在网上看了各种测评,纠结了好久才下定决心入手了智能猫砂盆。封闭式和开放式都用过,各有各的利与弊,不过最后的我还是选择了开放式的智能猫砂盆,因为开放式的设计结构会更加方便我观察小猫,哪个铲屎官不喜…...

阿里云开启ssl证书过程记录 NGINX
🤞作者简介:大家好,我是思无邪,2024 毕业生,某厂 Go 开发工程师.。 🐂我的网站:https://www.yishanicode.top/ ,持续更新,希望对你有帮助。 🐞如果文章或网站…...

C语言程序设计 9.37 调用随机函数为5x4的矩阵置 100以内的整数,输出该矩阵,求出每行元素之和,并把和的最大的那一行与第一行的元素对调
void count_sum(int sum[]) {int i;printf("每行相加的情况如下\n");for (i 0;i < 5; i){printf("%d ", sum[i]);}printf("\n"); } void test(int arr[5][4]) {int i, j;srand((unsigned)time(NULL));//添加这个可以每次不同的随机数&#x…...

Webpack: 借助 Babel+TS+ESLint 构建现代 JS 工程环境
概述 Webpack 场景下处理 JavaScript 的三种常用工具:Babel、TypeScript、ESLint 的历史背景、功能以及接入 Webpack 的步骤借助这些工具,我们能构建出更健壮、优雅的 JavaScript 应用 使用 Babel ECMAScript 6.0(简称 ES6) 版本补充了大量提升 JavaSc…...

孩子不想上学,父母应如何教育?“强迫教育”会激起孩子反抗心理
上周末朋友聚会,都是家有上学娃的年纪,闲聊中,话题自然少不了孩子的上学问题。其中,不少朋友都有抱怨过同一个问题:孩子不想上学,即使人到了学校,心也不在学校。 事实上,孩子出现…...

Python深度学习技术
原文链接:Python深度学习技术 近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。Transformer模型(BERT、GPT-…...

ECharts 雷达图案例002 - 诈骗性质分析
ECharts 雷达图案例002 - 诈骗性质分析 📊 ECharts 雷达图案例002 - 诈骗性质分析 深入挖掘数据背后的故事,用可视化手段揭示诈骗行为的模式和趋势。 🔍 案例亮点 创新的数据展示方式,让复杂的诈骗数据一目了然。定制化的雷达图…...

想远程控制手机,用哪个软件好?
很多人都想知道安卓系统或iOS系统要如何实现手机远程控制手机、电脑远程控制手机,分别需要用到什么软件,这篇文章一次说清楚。 注意,安卓系统需要是7.0及以上版本,iOS系统需要是11及以上版本。具体使用步骤请点击关注,…...

数字内容“遍地开花”,AI技术如何创新“造梦”?
文 | 智能相对论 作者 | 陈泊丞 这是春晚舞台西安分会场《山河诗长安》的一幕:“李白”现世,带领观众齐颂《将进酒》,将中国人骨子里的豪情与浪漫演绎得淋漓尽致。 这又是浙江义乌商品市场里的另一幕:只会说几个英文单词的女老板…...

MySQL集群如何实现读写分离
数据源配置:定义了主从数据库的连接池。读写分离规则:通过MasterSlaveRuleConfiguration定义了主从数据库的读写分离规则。负载均衡算法:定义了从数据库的负载均衡算法。创建ShardingDataSource:使用数据源和读写分离规则创建了Sh…...

一分钟剪辑1000条视频的云微客矩阵,怎么做到的?
当我们打开短视频软件时,就会有大量风格迥异的短视频犹如潮水般涌现在我们面前,这些短视频不仅配置了加粗的标题,下方还配置了字幕,中间则播放着视频,就是这样简易的视频,往往总能获得较高的播放量…...

简单案例比较Lambda和方法引用的差别
1.打印列表元素 正常使用 List<String> list Arrays.asList("a", "b", "c");for (String str: list){System.out.println(str);}Lambda表达式 list.forEach(e -> System.out.println(e));方法引用 list.forEach(System.out::println…...

10 个最佳 AI 代码生成器
人工智能的兴起极大地影响了编码和开发领域。 人工智能驱动的代码生成器有助于简化编码流程、自动化日常任务,甚至预测和建议代码片段。 下面,我们介绍一些最好的人工智能代码生成器、它们的独特功能,以及它们如何彻底改变您的编程体验。 1.…...

Eureka服务发现机制解析:服务实例的唯一标识
引言 Eureka是Netflix开源的服务发现框架,它是Spring Cloud体系中的核心组件之一。在微服务架构中,服务实例的动态注册与发现是实现服务间解耦和通信的关键。Eureka通过提供服务注册中心,使得各微服务实例能够注册自己并发现其他服务实例。本…...

操作系统实训复习笔记(基于命名管道与信号的进程间通信)
目录 基于命名管道与信号的进程间通信 第1关:命名管道与信号IPC操作考查 基于命名管道与信号的进程间通信 第1关:命名管道与信号IPC操作考查 (没啥好说的,不会的操作系统考试就靠记呗!!) slee…...

数字化转型第三步:数字化业务创新与发展,提升收入和利润
引言:之前笔者的文章发布了企业数字化转型业务部分,如【开源节流】如何通过数字化转型增强盈利能力?企业供应链数字化转型如何做?让企业盈利能力增强再飞一会 【财务数字化转型之底座】集团企业财务数据中台系统建设方案 等文章&a…...

SSM爱心捐赠物资维护系统-计算机毕业设计源码09536
摘要 随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减…...

中国9大流域地图SHP数据
九大流域片区是指中国境内九个主要流域片区。 分别包括东南诸河区、内陆河区、松辽河流区、海河流域区、淮河流域区、珠江流域片、西南诸河片、长江流域片和黄河流域片等。 如果这九大流域数据对你有用,请在文末查看该数据的领取方法。 中国9大流域图 流域&…...

android Switch/case with R.id.XXXX in android doesn‘t work 错误: 需要常量表达式解决方案
出现需要常量表达式 R.id.xxx 表达式错误的处理方法 出现的原因是因为: 使用 Android Gradle 插件 8.0.0 时,默认情况下,您的所有 R 类资源都不再声明为 final/constant(因此在 switch 语句中不起作用)。 如果您在 Android Studi…...

vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法)
本篇介绍一下使用 vue3-openlayers marker 光晕扩散(光环扩散)(postrender 事件和 render 方法) 1 需求 marker 光晕扩散(光环扩散) 2 分析 marker 光晕扩散(光环扩散)使用 post…...

新型防勒索病毒方案分享无需依靠病毒库
MCK具备可信系统,数据库保护,场景白名单,文件保护四大功能。如何运用在防勒索病毒中 在防勒索病毒的问题上,MCK主机的加固功能显得尤为重要。MCK的四大功能——可信系统、数据库保护、场景白名单以及文件保护,为我们在…...

《Mybatis-Plus》系列文章目录
什么是 MyBatis-Plus? Mybatis-Plus是一个在MyBatis基础上进行增强和扩展的开源Java持久层框架。 Mybatis-Plus(简称MP)旨在简化开发、提高效率,通过提供一系列便捷的功能和工具,大幅度减少开发人员编写重复代码的时…...

在Matplotlib中,`xlim()` 函数用于设置x轴的显示范围,原因和作用如下:
在Matplotlib中,xlim() 函数用于设置x轴的显示范围,原因和作用如下: 1. **控制显示范围**: xlim() 允许用户指定x轴的最小值和最大值,从而控制图表显示的数据范围。 2. **改善可视化**: 通过设置x轴的范围…...