当前位置: 首页 > news >正文

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而,作为一个单点服务,Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题,Redis 提供了哨兵模式,一个高可用性解决方案。

在这篇博客中,我们将深入探讨 Redis 的哨兵模式。我们将首先介绍哨兵模式的基本概念,包括主节点、从节点和哨兵节点。然后,我们将详细解析哨兵模式下的主要流程,包括主观下线、客观下线、领导者选举和故障转移。

无论你是一个 Redis 的新手,还是一个有经验的开发者,我相信这篇博客都能帮助你更好地理解和使用 Redis 的哨兵模式。让我们开始吧!


文章目录

        • 1、Redis哨兵模式介绍
          • 1.1、Redis哨兵模式概述
          • 1.2、Redis主从复制与哨兵模式
          • 1.3、Redis哨兵模式主要角色
        • 2、Redis哨兵模式原理
          • 2.1、Redis哨兵模式-定时监控
          • 2.2、Redis哨兵模式-主观&客观下载
          • 2.4、Redis哨兵模式-节点选举
          • 2.5、Redis哨兵模式-故障转移
        • 3、Redis主从复制实现
          • 3.1、拉取Redis镜像
          • 3.3、创建所需文件夹
          • 3.3、修改redis.conf
          • 3.4、修改sentinel.conf
          • 4.5、运行容器
          • 4.6、查看主从节点信息


1、Redis哨兵模式介绍

1.1、Redis哨兵模式概述

Redis 哨兵模式是 Redis 提供的一种高可用解决方案。它通过使用哨兵节点来监控 Redis 主服务器和从服务器的运行状态,当主服务器出现故障时,哨兵可以自动将一个从服务器提升为新的主服务器,实现故障转移。

image-20230910180721166

以下是 Redis 哨兵模式的主要特点:

  1. 监控:哨兵会定期检查主服务器和从服务器是否正常运行,这包括检查是否能正常响应客户端的请求,以及主从服务器之间的数据复制是否正常。
  2. 通知:当哨兵发现主服务器出现故障时,它可以通过 API 向管理员发送通知。
  3. 自动故障转移:当主服务器出现故障时,哨兵会自动从从服务器中选举出一个新的主服务器,并让其他的从服务器开始复制新的主服务器。
  4. 配置提供者:客户端可以向哨兵询问哪个服务器是当前的主服务器。这样,即使发生了故障转移,客户端也能找到正确的主服务器。
1.2、Redis主从复制与哨兵模式

主从复制模式在 Redis 中是一种常见的数据冗余和读取性能提升的方式,但它也存在一些不足之处:

  1. 单点故障问题:在主从复制模式中,所有的写操作都是在主服务器上进行的,如果主服务器出现故障,那么整个 Redis 服务将无法处理写请求。
  2. 故障恢复手动性:当主服务器出现故障后,需要手动将一个从服务器提升为新的主服务器,并修改应用程序的配置指向新的主服务器。这个过程可能需要一段时间,导致服务中断。
  3. 数据一致性问题:在主服务器向从服务器复制数据的过程中,如果出现网络问题或者从服务器宕机,可能会导致主从服务器的数据不一致。

Redis 哨兵模式就是为了解决这些问题而设计的:

  1. 自动故障转移:哨兵模式可以自动检测主服务器的状态,当主服务器出现故障时,哨兵会自动从从服务器中选举出一个新的主服务器,并让其他的从服务器开始复制新的主服务器。这个过程是自动进行的,无需人工干预,可以减少因主服务器故障导致的服务中断时间;
  2. 避免单点故障:通过自动故障转移,哨兵模式可以避免单点故障问题。即使主服务器出现故障,Redis 服务仍然可以继续处理写请求;
  3. 通知(Notification): 哨兵可以将故障转移的结果发送给客户端;
  4. 提供服务发现功能:哨兵还提供了服务发现功能,客户端可以询问哨兵当前的主服务器是哪一个,这样即使发生了故障转移,客户端也能找到正确的主服务器。
1.3、Redis哨兵模式主要角色

在 Redis 哨兵模式中,主要有以下三种角色:

  1. 主节点(Master):主节点是 Redis 服务的主要提供者,它处理所有的写操作,并将数据复制到从节点。在正常情况下,所有的读写操作都由主节点处理;
  2. 从节点(Slave):从节点是主节点的备份,它从主节点复制数据,可以处理读操作。当主节点出现故障时,从节点可以被提升为新的主节点;
  3. 哨兵节点(Sentinel):哨兵节点是 Redis 高可用性的关键,它监控主节点和从节点的运行状态,当主节点出现故障时,哨兵节点会进行故障转移,选举一个新的主节点,并重新配置从节点。

在哨兵模式下,主节点、从节点和哨兵节点都可以是多个,形成一个分布式的、高可用的 Redis 服务。


2、Redis哨兵模式原理

哨兵模式是通过哨兵节点完成对数据节点的监控、下线、故障转移。

image-20230910183904891

2.1、Redis哨兵模式-定时监控

哨兵节点会定期检查主服务器和所有从服务器的运行状态,包括是否在线,是否能正常响应请求,主从数据复制是否正常等。

以下是哨兵模式下的定时监控的主要步骤:

  1. 每隔(默认) 1 秒,每个 Sentinel 节点会向主节点、从节点以及其余 Sentinel 节点发送 PING 命令以检查它们是否在线。如果服务器正常响应了 PING 命令,那么哨兵节点就认为这个服务器是在线的。如果服务器没有响应,或者返回了错误,那么哨兵节点就认为这个服务器可能出现了故障;
  2. 每隔(默认) 2 秒,每个 Sentinel 节点会向 Redis 数据节点的 __sentinel__:hello 频道发送消息,这个消息包含了该 Sentinel 节点对于主节点的判断以及当前 Sentinel 节点的信息;
  3. 每隔(默认) 10 秒,每个 Sentinel 节点会定期(默认是每10秒)向主节点和所有从节点发送 INFO 命令,获取最新的拓扑结构和其他信息。INFO 命令可以返回 Redis 服务器的各种信息和统计数据,包括服务器的一般信息(例如 Redis 版本,启动时间,操作系统等),客户端连接的信息,内存使用情况,数据持久化的状态,主从复制的信息等。
2.2、Redis哨兵模式-主观&客观下载

在 Redis 哨兵模式中,"主观下线"和"客观下线"是两个重要的概念,它们是 Sentinel 节点判断主服务器是否出现故障的依据。

主观下线(Subjective Down):每个 Sentinel 节点会定期(默认是每1秒)向主节点、从节点和其他 Sentinel 节点发送 PING 命令进行心跳检测。如果某个节点在 down-after-milliseconds 参数设定的时间内没有进行有效回复,Sentinel 节点就会对该节点做失败判定,这个行为被称为主观下线。

主观下线是基于 Sentinel 节点自身视角的判断,它只代表了该 Sentinel 节点无法与被检测节点正常通信,可能是由于网络问题或者被检测节点的实际故障。

image-20230910193253376

客观下线(Objective Down):当足够多的 Sentinel 节点都认为主服务器已经下线,那么主服务器就被认为是客观下线。这是多数 Sentinel 节点的共识,更具有可信度。

在 Redis 哨兵模式中,当一个 Sentinel 节点主观判断主节点下线后,它会通过 sentinel is-master-down-by-addr 命令向其他 Sentinel 节点询问对主节点的判断。如果收到的回复中,认为主节点下线的 Sentinel 节点数量达到了 quorum 参数设定的值,那么这个 Sentinel 节点就会认为主节点确实有问题,做出客观下线的决定。

在 Sentinel 模式下,只有当主服务器被判断为客观下线,才会触发故障转移过程。这是为了防止由于个别 Sentinel 节点的网络问题或者误判导致的误报。只有当多数 Sentinel 节点都认为主服务器已经下线,才认为这是一个真实的故障,需要进行故障转移。

2.4、Redis哨兵模式-节点选举

在 Redis 哨兵模式中,当主节点被判断为客观下线后,哨兵节点会进行领导者选举,选出一个领导者 Sentinel 节点来负责故障转移的过程。以下是领导者 Sentinel 节点选举的详细步骤:

  1. 开始选举:当一个 Sentinel 节点判断主节点客观下线后,它会开始一个新的领导者选举过程。首先,它会增加自己的配置纪元(一个全局的、递增的数字),然后向其他 Sentinel 节点发送请求投票的消息;
  2. 投票:当一个 Sentinel 节点收到请求投票的消息后,如果请求中的配置纪元大于自己的配置纪元,那么它会更新自己的配置纪元,并向请求投票的 Sentinel 节点发送投票消息。每个 Sentinel 节点在一个配置纪元中只能投票一次;
  3. 统计投票:请求投票的 Sentinel 节点会统计收到的投票消息,如果在指定的时间内(默认是 2 秒)收到了大多数 Sentinel 节点的投票,那么它就会被选举为领导者;
  4. 开始故障转移:领导者 Sentinel 节点会开始故障转移过程,包括选举新的主节点,重新配置从节点等。

通过这个过程,哨兵系统可以在主节点出现故障后,快速选举出一个领导者来进行故障转移,保证 Redis 服务的高可用性。

2.5、Redis哨兵模式-故障转移

在 Redis 哨兵模式中,当主节点被判断为客观下线后,哨兵节点会进行故障转移,选举一个新的主节点,并重新配置从节点。以下是故障转移的详细步骤:

image-20230910193859958

  1. 选举新的主节点:首先,领导者 Sentinel 节点会从所有的从节点中选举出一个新的主节点。选举的原则主要是优先选择数据最新(复制偏移量最大)和优先级最高的从节点。
  2. 发送 SLAVEOF NO ONE 命令:领导者 Sentinel 节点会向新选举出的主节点发送 SLAVEOF NO ONE 命令,让它成为新的主节点。
  3. 重新配置从节点:然后,领导者 Sentinel 节点会向其他的从节点发送 SLAVEOF 命令,让它们成为新主节点的从节点。
  4. 更新元数据:最后,所有的 Sentinel 节点会更新自己的元数据,包括主节点的地址、主从关系等。
  5. 通知客户端:所有的 Sentinel 节点会向订阅了 +switch-master 事件的客户端发送消息,通知它们主节点已经切换。

通过这个过程,哨兵系统可以在主节点出现故障后,快速完成故障转移,保证 Redis 服务的高可用性。


3、Redis主从复制实现

3.1、拉取Redis镜像

拉取 Redis 镜像:

docker pull redis

image-20230910145808068

3.3、创建所需文件夹

创建所需文件夹,用于映射容器相应文件路径:

mkdir -p ~/data/redis/master/data                                  
touch ~/data/redis/master/redis.confmkdir                       
touch ~/data/redis/master/redis.conf 
mkdir -p ~/data/redis/slave-1/data       
touch ~/data/redis/slave-1/redis.confmkdir
touch ~/data/redis/slave-1/redis.conf
mkdir -p ~/data/redis/slave-2/data       
touch ~/data/redis/slave-2/redis.confmkdir
touch ~/data/redis/slave-2/redis.conf 
mkdir -p ~/data/redis/slave-3/data       
touch ~/data/redis/slave-3/redis.confmkdir
touch ~/data/redis/slave-3/redis.conf 
# sentinel.conf 文件一个就够
touch ~/data/redis/master/sentinel.conf   			
3.3、修改redis.conf

修改主节点 redis.conf 文件

bind 0.0.0.0
# 开启保护模式,限制为本地访问,默认yes
protected-mode no 
# 默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
daemonize no
# redis持久化(可选)
appendonly yes 

修改从节点 redis.conf 文件

bind 0.0.0.0
# 开启保护模式,限制为本地访问,默认yes
protected-mode no 
# 默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
daemonize no
# redis持久化(可选)
appendonly yes 
# 指向master节点
replicaof 172.17.0.2 6379
3.4、修改sentinel.conf

修改 sentinel.conf 文件

daemonize yes
sentinel monitor mymaster 172.17.0.2 6379 2
port 26379
4.5、运行容器

运行容器并指定挂载路径:

docker run -p 16379:6379 -p 16389:26379 --name redis-master -v ~/data/redis/master/data/:/data -v ~/data/redis/master/sentinel.conf:/etc/redis/sentinel.conf -v ~/data/redis/master/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes
---
docker run -p 26379:6379  -p 16390:26379 --name redis-slave-1 -v ~/data/redis/slave-1/data/:/data -v ~/data/redis/slave-1/sentinel.conf:/etc/redis/sentinel.conf -v ~/data/redis/slave-1/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes
---
docker run  -p 36379:6379  -p 16391:26379 --name redis-slave-2 -v ~/data/redis/slave-2/data/:/data -v ~/data/redis/slave-2/sentinel.conf:/etc/redis/sentinel.conf  -v ~/data/redis/slave-2/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes
---
docker run  -p 46379:6379  -p 16392:26379 --name redis-slave-3 -v ~/data/redis/slave-3/data/:/data -v ~/data/redis/slave-3/sentinel.conf:/etc/redis/sentinel.conf  -v ~/data/redis/slave-3/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes

image-20230910201641077

通过 Docker Desktop 查看:

image-20230910201658326

4.6、查看主从节点信息

查看主从节点信息:

# 进入从节点服务
docker exec -it [CONTAINER ID] redis-cli
# 查看角色信息
127.0.0.1:6379> role
# 查看主从复制信息
127.0.0.1:6379> info replication

主节点:

image-20230910202005890

从节点:

image-20230910201913818

相关文章:

Redis哨兵集群的介绍及搭建

Redis 是一款开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。然而,作为一个单点服务,Redis 在面临硬件故障或者网络问题时可能会导致服务不可用。为了解决这个问题,Redis 提供了哨兵模式,一个…...

【zookeeper】zookeeper日常运维

本文将分享一些zookeeper在日常使用中一些维护经验。 zookeeper清理快照 脚本或者命令清理 zookeeper长时间运行,快照逐渐增多可能造成服务器磁盘被占满的情况,但我们不能贸然用rm命令删除快照文件,如果直接删完会导致丢失好多数据&#x…...

【工作记录】MQTT介绍、安装部署及springboot集成@20230912

背景 近期公司可能会有物联网设备相关项目内容,提前对用到的mqtt协议做预研和初步使用。 最初接触到mqtt协议应该是早些年的即时通讯吧,现在已经是物联网设备最热门的协议了。 作为记录,也希望能帮助到需要的朋友。 MQTT介绍 《MQTT 协议规…...

Flask 使用 JWT(一)

下面是一些 JWT 的使用场景: 1、 授权:这是 JWT 最常的使用场景。一旦用户登录,后续的每个请求都必须携带 JWT ,允许用户携带 Token 访问所有的路由、服务器和资源。单点登录时目前使用最广泛的一个场景,因为它开销小并且能够轻易的实现跨域访问。 2、信息交换:JWT Token…...

Oracle(1):Oracle简介

1 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORACLE 数据…...

计算机网络篇之IP地址

计算机网络篇之IP地址 文章目录 计算机网络篇之IP地址概括IPv4地址IPv6地址分配总结 概括 IP地址是计算机网络中用于标识和定位设备的一组数字,IP地址分为IPv4和IPv6两种格式 IPv4地址 IPv4地址是32位的二进制数,通常表示为四个用点分隔的十进制数&am…...

webrtc-m79-测试peerconnectionserver的webclient-p2p-demo

1 背景 webrtc的代码中有peerconnectionclient和peerconnectionserver的例子,但是没有对应的web端的例子,这里简单的写了一个测试例子,具体如下: 2 具体操作 2.1 操作流程 2.2 测试效果 使用webclient与peerconnectionclient的…...

C#,《小白学程序》第十五课:随机数(Random)第二,统计学初步,数据统计的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十五课&#xff1a;随机数&#xff08;Random&#xff09;第二&#xff0c;统计学初步&#xff0c;数据统计的计算方法与代码 /// 用随机数做简单的统计并用图形显示统计结果。 /// </summary> /// <param name&q…...

C# 子类如何访问子类的方法(同一父类)

在继承关系中&#xff0c;子类可以通过创建另一个子类的对象来访问其方法。下面是一个示例&#xff0c;展示了子类如何访问另一个子类的方法&#xff1a; public class Animal {public virtual void Speak(){Console.WriteLine("我是动物。");} }public class Cat :…...

《Docker 容器化的艺术:深入理解容器技术》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…...

gitlab配置hook,commit message的时候校验提交的信息

在 GitLab 中配置 Webhook 来调用 Java 接口以校验 commit 信息&#xff0c;是很多公司的一些要求&#xff0c;因为提交信息的规范化是必要的 不阻止commit的版本 在 GitLab 项目中进入设置页面。 在左侧导航栏中选择 “Webhooks”&#xff08;Web钩子&#xff09;。 在 We…...

ssh远程管理服务

ssh远程管理服务是什么 SSH是一个安全协议&#xff0c;在进行数据传输时&#xff0c;会对数据包进行加密处理&#xff0c;加密后在进行数据传输。确保了数据传输安全, 那SSH服务主要功能有哪些呢&#xff1f; 1.提供远程连接服务器的服务 1&#xff09;linux远程连接协议&…...

C语言顺序表

文章目录 前言线性表顺序表静态顺序表动态顺序表 接口实现 前言 我们先补一下上篇博客落下的知识点&#xff1a; 首先说一下斐波那契的时间复杂度和空间复杂度&#xff1a; long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; }还是说一下size_t代表的类型是unsi…...

滑动窗口详解

滑动窗口本质其实也是一种双指针算法&#xff0c;只是因为它维护的区间随着遍历的进行在不停变化&#xff0c;所以形象地称为“滑动窗口” 一、⻓度最⼩的⼦数组 题目要求找到满足条件的长度最小的子数组&#xff0c;我们先来想想暴力的做法&#xff0c;再来想想能不能优化&am…...

JAVA -华为真题-分奖金

需求: 公司老板做了一笔大生意&#xff0c;想要给每位员工分配一些奖金&#xff0c;想通过游戏的方式来决定每个人分多少钱。按照员工的工号顺序&#xff0c;每个人随机抽取一个数字。按照工号的顺序往后排列&#xff0c;遇到第一个数字比自己数字大的&#xff0c;那么&#xf…...

第二章:25+ Python 数据操作教程(第十八节如何使用 Matplotlib 库在 python 中执行绘图和数据可视化)持续更新中

本教程概述了如何使用 Matplotlib 库在 python 中执行绘图和数据可视化。这篇文章的目的是让您熟悉该库的基础知识和高级绘图功能。它包含几个示例,将为您提供使用 Python 生成绘图的实践经验。 目录 什么是 Matplotlib? Matplotlib 基础知识<...

XShell7 + Xftp7 + IDEA 打包MapReduce程序到集群运行

参考博客 【MapReduce打包成jar上传到集群运行】http://t.csdn.cn/2gK1d 【Xshell7/Xftp7 解决强制更新问题】http://t.csdn.cn/rxiBG IDEA打包MapReduce程序 这里的打包是打包整个项目&#xff0c;后期等学会怎么打包单个指定的mapreduce程序再来更新博客。 1、编译打包 …...

微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)

介绍 希望入门D365的同学们&#xff0c;需要具备的知识点&#xff0c;涉及C#&#xff0c;WebApi&#xff0c;前端知识&#xff0c;Power Platform等知识&#xff0c;以及Azure的知识点等&#xff0c;需要有了解。 实施Microsoft Dynamics 365 CE &#xff08;12章&#xff09;…...

vscode搭建Django自带后台管理系统

文章目录 一、django自带的后台管理系统1. 建表2. 后台管理系统2.1 创建账号2.2 运行后台2.3 登录 二、模版渲染1. 直接将数据渲染到页面2. 数据传递给js 三、数据库1. 查看当前数据库2. 创建UserInfo数据表3. Django rest framework配置 四、vue前端搭建1. 在Django项目的根目…...

Verilog零基础入门(边看边练与测试仿真)-时序逻辑-笔记(4-6讲)

文章目录 第四讲第五讲第六讲 第四讲 1、计数器 代码&#xff1a; //计数器 timescale 1ns/10ps module counter(clk,res,y); input clk; input res; output[7:0] y;reg[7:0] y; wire[7:0] sum;//1运算的结果&#xff08;1&#xff0…...

2023-09-12力扣每日一题

链接&#xff1a; 1462. 课程表 IV 题意 一个pair<int,int>表示a是b的前置 进行n次查询&#xff0c;查询q是否是p的前置&#xff08;可以不是直接前置&#xff09; 解&#xff1a; 就是要把01、12、13这种能转换出02、03&#xff0c;弗洛伊德即可 无环无负权 实际…...

leetcode面试题:交换和(三种方法实现)

交换和&#xff1a; 给定两个整数数组&#xff0c;请交换一对数值&#xff08;每个数组中取一个数值&#xff09;&#xff0c;使得两个数组所有元素的和相等。 返回一个数组&#xff0c;第一个元素是第一个数组中要交换的元素&#xff0c;第二个元素是第二个数组中要交换的元…...

前端可视化界面开发技术:实战与优化

引言 在当今的互联网时代&#xff0c;数据可视化已经成为信息展示和交互的重要方式。特别是在前端开发领域&#xff0c;可视化界面的应用越来越广泛&#xff0c;涉及到数据监控、分析和决策等多种场景。本文将深入探讨前端可视化界面开发的关键技术&#xff0c;通过实例解析提…...

Python实现机器学习(下)— 数据预处理、模型训练和模型评估

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本门课程将介绍人工智能相关概念&#xff0c;重点讲解机器学习原理机器基本算法&#xff08;监督学习及非监督学习&#xff09;。使用python&#xff0c;结合sklearn、Pycharm进行编程&#xff0c;介绍iris&#xff08;鸢尾…...

树结构处理,list和tree互转

1、实体类 package com.iot.common.test.entity;import lombok.Data;import java.util.List;/*** description:* author:zilong* date:2023/9/8*/ Data public class Node {//idprivate String id;//父节点idprivate String pId;//名称private String name;//编码private Stri…...

可视化大屏设计模板 | 主题皮肤(报表UI设计)

下载使用可视化大屏设计模板&#xff0c;减少重复性操作&#xff0c;提高报表制作效率的同时也确保了报表风格一致&#xff0c;凸显关键数据信息。 软件&#xff1a;奥威BI系统&#xff0c;又称奥威BI数据可视化工具 所属功能板块&#xff1a;主题皮肤上传下载&#xff08;数…...

Spring Boot + Vue的网上商城之客服系统实现

Spring Boot Vue的网上商城之客服系统实现 在网上商城中&#xff0c;客服系统是非常重要的一部分&#xff0c;它能够为用户提供及时的咨询和解答问题的服务。本文将介绍如何使用Spring Boot和Vue.js构建一个简单的网上商城客服系统。 思路 在本教程中&#xff0c;我们学习了…...

RabbitMQ: return机制

1. Return机制 Confirm只能保证消息到达exchange&#xff0c;无法保证消息可以被exchange分发到指定queue。 而且exchange是不能持久化消息的&#xff0c;queue是可以持久化消息。 采用Return机制来监听消息是否从exchange送到了指定的queue中 2.Java的实现方式 1.导入依赖 &l…...

记录一些奇怪的报错

错误&#xff1a;AttributeError: module distutils has no attribute version 解决方案&#xff1a; 第一步&#xff1a;pip uninstall setuptools 第二步&#xff1a;conda install setuptools58.0.4 错误&#xff1a;ModuleNotFoundError: No module named _distutils_hac…...

Ubuntu 安装redis数据库,并设置开机自启动

1、下载安装包 wget http://download.redis.io/releases/redis-7.0.9.tar.gz 2、解压 tar -zxvf redis-7.0.9.tar.gz 3、复制到解压缩的包移动到/usr/local/ sudo mv ./redis-7.0.9 /usr/local/ 4、编译 cd /usr/local/redis-7.0.9 sudo make 5、测试: 时间会比较长&#xff0…...

网站建设公司业务/网络营销实训总结报告

Java如何入门&#xff1f; 1、建立好开发环境 首先建立好开发环境非常重要&#xff0c;工欲善其事&#xff0c;必先利其器。做任何开发&#xff0c;首先就是要把这个环境准备好&#xff0c;之后就可以去做各种尝试&#xff0c;尝试过程中就能逐渐建立信心。初学者往往在环境配…...

国外做免费的视频网站有哪些/公众号关键词排名优化

第1关:异步电动机的机械特性 任务描述 已知一台三相4极异步电动机,额定电压u1=380V(角接),额定频率f1=50Hz,额定转速n1=1487r/min,电动机的r1=0.055Ω,x1=0.265Ω,x2=0.565Ω。根据电阻r2变化,绘制出转差率/电磁转矩和电磁转矩/转速的机械特性曲线。 相关知识 为了…...

iis7添加php网站/灰色词排名代做

一 组合概念 一个类的对象作为另外一个类对象的属性第一个例子&#xff1a; 2 class Weapon:3 def prick(self, obj): # 这是该装备的主动技能,扎死对方4 obj.life_value - 500 # 假设攻击力是5005 6 class Person: # 定义一个人类7 role person # 人的角…...

网站怎么做qq授权登录/国家高新技术企业名单

作为一个读书爱好者&#xff0c;和一个豆瓣狂热支持者&#xff0c;前段时间对豆瓣的开放API很感兴趣。在写“使用正则表达式获取豆瓣评论全文之研究”这篇文章的时候&#xff0c;就萌生了自己写一个方便查询书籍信息的豆瓣WP7客户端应用。快两个月过去了&#xff0c;梦想一步步…...

连接国外网站做端口映射/百度的人工客服

Biotin-PEG-NH2 生物素-聚乙二醇-氨基 英文名称&#xff1a;Biotin-PEG-Amine 中文名称&#xff1a;生物素-聚乙二醇-氨基 外观: 白色/灰白色液体、半固体或固体&#xff0c;取决于分子量。 溶剂&#xff1a;水&#xff0c;氯仿&#xff0c;DMSO&#xff0c;二氯甲烷等常规…...

怎么用建站abc做网站/如何刷关键词指数

队列与栈数据结构是使用频率较高的技术知识&#xff0c;今天与大家一起分享Python如何用List 来实现队列操作。 队列是什么 队列是一种先进先出&#xff08;First-In-First-Out&#xff0c;Fifo&#xff09;的数据结构。 队列是一种列表&#xff0c;不同的是队列只能在队尾插入…...