news 2026/10/21 12:41:58

基于STM32的自动喂食器设计:从硬件选型到代码实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于STM32的自动喂食器设计:从硬件选型到代码实现

简介:这是一份基于STM32F401的自动喂食器嵌入式课程设计完整项目包,面向嵌入式方向的学生和开发者,可用于宠物喂养、定时控制等场景的参考设计。资源共201个文件,以C/H源码和Proteus仿真文件为核心,另有Keil工程配置、STM32CubeMX的.ioc配置、编译生成的hex/axf以及调试映射文件等,压缩包整体约11.75MB。已有7576人学习下载。项目实现了定时器触发喂食、按键设定周期、LCD状态显示、PWM电机控量、传感器检测等典型功能,底层基于STM32 HAL库,串口、SPI、定时器等驱动模块清晰,适合作为嵌入式综合实验的完整模板。配套的仿真电路图与代码工程相互印证,可以直观理解硬件连接和系统工作流程。通过研究整个项目,可完成从外设配置、中断处理到系统联调的实战训练,也能为课程设计、毕业设计或进一步功能扩展提供扎实基础。

1. 需求分析:先把“基于STM32自动喂食器设计”到底要解决什么想清楚

很多同学拿到“基于STM32自动喂食器设计”这个题目,第一反应是选屏幕、选电机、把物料清单凑齐就开始焊板子,结果做到一半发现出料不准、定时不触发、掉电丢配置,把一个本来不难的课设做成了玄学现场。做嵌入式课程设计,首先要立住需求:自动喂食器不是“远程喂食”,它的核心只有三件事——按时、按量、稳定。出差三天,猫粮碗必须在每天早上 8 点准时补充 30 克,而且机器不能因为卡料、称重漂移、突然断电打乱节奏。这套方案适合两类人:一类是正在做嵌入式课程设计或毕业设计的学生,需要一份能讲清楚原理、能过答辩的完整设计;另一类是想给家里宠物做一台可靠喂食器的开发者。下面我用一个基于 STM32F103C8T6 的完整方案,从需求、设计、实现到验收一条线讲完。

2. 系统总体设计:硬件选型与六个模块的职责划分

2.1 主控选型:为什么是STM32F103C8T6而不是51或Arduino

这个项目外设多且同时工作:一个 24 位 ADC 的称重芯片、一个四相步进电机、一个 I2C 接口的 OLED、三个独立按键、一路 RTC 时钟。如果选 51 单片机,定时器资源紧张,I2C 还要软件模拟,主循环里既要轮询按键又要刷新屏幕,稍不留神定时喂食的检查就会被拖慢。STM32F103C8T6 的优势在于外设资源刚好覆盖这些需求:它有多个定时器通道可以输出步进电机的脉冲,有硬件 I2C 直接驱动 OLED 和 HX711(HX711 也可以走模拟时序),有内置 RTC 和后备电源引脚,价格在课程设计预算内,资料也最容易找到。

有人会问为什么不用 Arduino。Arduino 做原型确实快,但课程设计和答辩的重点是能讲清寄存器、时序、状态机这些底层逻辑。用 Arduino 加库,HX711 读数和 OLED 显示都被封装好了,答辩时老师问“I2C 时序怎么工作的”“你这几个模块之间怎么同步的”,答不上来反而容易翻车。所以这套方案用 STM32 标准外设库裸机编程,关键代码自己写,既能跑起来,也能讲清楚。

2.2 硬件架构:六个模块的接线关系与供电隔离

整个系统可以拆成六个模块,各自职责明确:主控模块负责调度,称重模块负责感知余粮和出料量,电机驱动模块负责执行出料,显示模块负责人机交互,按键模块负责参数设置,电源与 RTC 后备模块负责稳定供电和掉电保持。各模块与主控的连接方式如下表,这些引脚号对应我的实际接法,你移植时可以根据自己板子的丝印调整。

模块型号/方案与 STM32 连接职责
主控STM32F103C8T6 最小系统板自带晶振、复位、SWD任务调度与逻辑控制
称重HX711 + 压力传感器DOUT→PB0, SCK→PB1读取料仓重量,计算余粮与出料量
出料28BYJ-48 步进电机 + ULN2003IN1-IN4→PA4-PA7转动拨片,将颗粒推入出料口
显示SSD1306 OLED(I2C)SDA→PB7, SCL→PB6显示时钟、余粮、菜单
按键三个独立按键PA0(OK), PA1(UP), PA2(DOWN)设置定时槽位与喂食量
电源/RTC5V 适配器 + AMS1117 + CR2032VBAT 接电池供电与掉电保持时间

这里要特别说一个经验:步进电机启动瞬间电流很大,如果电机和单片机共用一组电源,电机一转,单片机电压就被拉低,轻则 OLED 闪烁,重则系统直接复位。我一般会这样做:5V 输入先给电机驱动供电,再经过 AMS1117 降到 3.3V 单独给主控、OLED、HX711 供电,电源输入处加一个 1000uF 电解电容和 104 陶瓷电容,这样电机启停时主控供电波动能控制在可接受范围。硬件上把“驱动”和“控制”隔离,后面很多软件问题都能避免。

2.3 工作流程:用状态机把喂食逻辑串起来

这个系统的难点不在于某个模块单独跑起来,而在于多个模块同时在一个主循环里协作。如果直接在主循环里写一堆 if 判断状态,代码很快就变成黑匣子。我建议一开始就定义好状态机,把整个喂食流程串起来:

typedef enum { SYS_BOOT, // 上电自检:HX711初始化、检测余粮 SYS_IDLE, // 待机:显示时间与余粮,扫描按键,检查定时 SYS_MENU, // 菜单:设置定时时间与喂食量 SYS_FEEDING, // 出料中:步进电机运转,屏蔽按键 SYS_ERROR // 异常:称重异常或电机堵转报警 } SysState;

状态切换的逻辑是:上电进入 SYS_BOOT,完成 HX711 初始化和余粮检测后自动进入 SYS_IDLE;按键 OK 短按进入 SYS_MENU,在菜单里设置完自动回到 SYS_IDLE;定时时间到或手动触发进入 SYS_FEEDING,出料完成回到 SYS_IDLE;如果检测到称重数值异常(比如余粮突然变负)或电机持续堵转,进入 SYS_ERROR 并显示错误码。

状态机的价值在于:任何时候我都知道系统在干什么,出问题时也方便定位。比如定时到了不出料,先检查当前是不是卡在 SYS_FEEDING 里,如果上一次喂食状态没有正确退出,新的触发就会被吞掉。这是自动喂食器里最常见的逻辑 bug,用状态机后一眼就能定位。

2.4 关键参数:先定指标再写代码

下表是这套系统的设计参数,这些指标决定了你选传感器、写控制算法的方向。比如单次出料精度要求 ±3g,那电机控制就至少要让步进电机每一步的排料量小于 1g,才能保证不会超出误差边界。

参数设计值说明
供电电压5V 输入,3.3V 逻辑电机驱动 5V,主控逻辑 3.3V
料仓容量1L,约 500g 颗粒粮超过 2kg 重量需换大量程传感器
单次出料精度±3g由电机步数与称重闭环共同保证
称重量程0~2kg,分辨率 1gHX711 24 位 ADC,实际精度取决于传感器
定时槽位4 组,每日重复每天同一时间触发一次
掉电保持RTC 连续走时接 CR2032 后断电时间不丢

这里要强调一下称重和出料的关系。很多人只把称重当成显示余粮的功能,实际上它还能做闭环出料:电机先转一个预设角度,停下来等称重稳定,如果实际出料量和设定值差超过 1g,再补转几步。这样即使颗粒大小不一致导致单步排料量波动,最终精度也能落在 ±3g 内。后面第 3 章会给出具体的实现代码。

3. 关键模块实现:称重、出料、定时与人机交互的核心代码

3.1 HX711 称重模块:读取原始数据与重量换算

HX711 是 24 位差分 ADC,和主控之间通过两根线通信:DOUT 输出数据,SCK 提供时钟。读数的关键是时序:DOUT 拉低表示一次转换完成,主控从 SCK 发出 24 个脉冲,在脉冲高电平期间读取 DOUT,依次得到 24 位数据;第 25 个脉冲让芯片进入下一次转换。读取代码用标准库实现:

#include "hx711.h" // 读取一次原始数据,返回24位有符号数 uint32_t HX711_Read(void) { uint32_t val = 0; uint8_t i; while (HX711_DOUT_READ()); // 等待DOUT拉低,表示数据已准备好 for (i = 0; i < 24; i++) { // 读24位数据,高位在前 HX711_SCK_HIGH(); val |= (uint32_t)HX711_DOUT_READ() << (23 - i); HX711_SCK_LOW(); } HX711_SCK_HIGH(); // 第25个脉冲,进入下一轮转换 HX711_SCK_LOW(); return val ^ 0x800000; // 符号位转换,得到有符号数 }

这段代码里最关键的是while (HX711_DOUT_READ());这行:DOUT 没有拉低说明数据还没准备好,此时读出来的数据是上一次的残留值。实际测试中,如果去掉这个等待,称重数值会出现偶发跳变,而且很难用滤波消除。数据读取之后,要做两件事:一是软件滤波,二是标定换算。

我采样的策略是连续读 5 次,去掉最大值和最小值,剩下 3 次取平均值。这个“去极值平均滤波”对震动引起的毛刺很有效,代码实现简单,不需要开队列。重量换算公式是:实际重量 = (原始值 - 去皮零点) / 标定系数。标定系数怎么来?空料仓时读一次零点 tare,放一个 100g 的标准砝码,等读数稳定后得到 raw_100,那么 scale = (raw_100 - tare) / 100。把这三个变量存到内部 Flash,重新上电后不用再标定。

3.2 步进电机出料模块:用八拍脉冲控制出料量

出料执行机构我用的是 28BYJ-48 步进电机加 ULN2003 驱动板。这个电机是四相五线,步距角 5.625 度,自带 1:64 减速齿轮箱,转一圈需要约 2048 个半步。驱动顺序用标准的四相八拍:A-AB-B-BC-C-CD-D-DA,每次切换一个相位,电机走一个半步,这样扭矩比四拍模式大,丢步概率低。

出料的关键是要把“克”换算成“步数”。我在方案里用了一个标定值:先手动让电机转完整一圈,称量实际排出的颗粒重量,得到GRAM_PER_CIRCLE,比如一圈出 10g,那么 30g 就需要 3 圈,对应 6144 个半步。控制代码如下:

#define STEP_DELAY_US 1200 // 步间延时,决定转速,太短容易丢步 #define FULL_CIRCLE_STEPS 2048 // 28BYJ-48 转一圈的半步数 // 八拍相位表:A-AB-B-BC-C-CD-D-DA const uint8_t phase_table[8][4] = { {1,0,0,0}, {1,1,0,0}, {0,1,0,0}, {0,1,1,0}, {0,0,1,0}, {0,0,1,1}, {0,0,0,1}, {1,0,0,1} }; // 走一步 void Motor_Step(uint8_t phase) { HAL_GPIO_WritePin(MOTOR_IN1_GPIO_Port, MOTOR_IN1_Pin, phase_table[phase][0]); HAL_GPIO_WritePin(MOTOR_IN1_GPIO_Port, MOTOR_IN2_Pin, phase_table[phase][1]); HAL_GPIO_WritePin(MOTOR_IN1_GPIO_Port, MOTOR_IN3_Pin, phase_table[phase][2]); HAL_GPIO_WritePin(MOTOR_IN1_GPIO_Port, MOTOR_IN4_Pin, phase_table[phase][3]); delay_us(STEP_DELAY_US); } // 定量出料:按克数换算步数 void Feed(int grams) { int steps = (grams * FULL_CIRCLE_STEPS) / GRAM_PER_CIRCLE; for (int i = 0; i < steps; i++) { Motor_Step(i & 0x07); // 相位循环取余 } }

这里有几个参数需要根据实际物料调整。STEP_DELAY_US是步间延时,1200us 对应的转速比较慢但扭矩稳,如果调到 700us 以下,电机在负载较大时会出现丢步,出料量偏低。GRAM_PER_CIRCLE受颗粒大小和料仓内粮食剩余量影响:料快空的时候,颗粒下滑速度变慢,每圈实际排出量会略少。所以我在方案里没有用纯开环,而是喂完后等称重稳定,如果误差超过设定值再补转。这个闭环在下文 3.4 里结合称重一起说。

3.3 RTC 定时喂食:到点触发与防重复执行

定时功能用 STM32 内置 RTC 实现,后备电池接 CR2032,断电后时间不丢。喂食计划表放在结构体数组里,支持 4 组时间:每组有小时、分钟、克数和使能标志。主循环每一轮都检查当前时间,判断是否有定时任务需要触发:

#define MAX_SLOTS 4 typedef struct { uint8_t hour; // 定时小时 uint8_t min; // 定时分钟 uint8_t gram; // 喂食量 uint8_t enabled; // 是否启用 } FeedSlot; FeedSlot slots[MAX_SLOTS]; RTC_TimeTypeDef curr; // 主循环调用,检查是否到点 void CheckFeedSchedule(void) { static uint8_t last_min = 0xFF; // 记录上一轮的分,防止同一分钟内重复触发 HAL_RTC_GetTime(&hrtc, &curr, RTC_FORMAT_BIN); if (curr.Minutes == last_min) { return; // 同一分钟内不重复检查 } last_min = curr.Minutes; for (int i = 0; i < MAX_SLOTS; i++) { if (slots[i].enabled && slots[i].hour == curr.Hours && slots[i].min == curr.Minutes) { Feed(slots[i].gram); } } }

这段代码里面last_min这个静态变量容易被人忽略,但它非常关键。RTC 的分辨率是秒,如果直接判断“小时等于预设小时且分钟等于预设分钟”,那么这个条件在整分钟内会一直成立,喂食函数会被反复调用,电机空转好几圈。用last_min记录上一轮扫描到的分钟,只有分钟变化时才去匹配定时条件,就能保证每个定时任务只触发一次。

配置掉电不丢失的问题单独说一下:4 组定时参数、去皮零点和标定系数都保存在内部 Flash 的独立扇区里,程序启动时读取并校验一个魔术字(比如 0xA5A5),校验通过才使用,否则恢复默认值。样机上我实测断电静置 12 小时后重新上电,RTC 时间正常,喂食参数完好,这块是答辩时的高频加分点。

3.4 人机交互:OLED 菜单与按键扫描

OLED 用硬件 I2C 驱动 SSD1306,显示内容分为两级界面:主界面显示当前时间、下次喂食倒计时和余粮重量;菜单界面可以设置定时时间、喂食克数和手动出料。菜单结构我控制在两级以内,避免按键逻辑复杂化。

按键扫描用状态机思想,短按和长按分开处理。三个按键分别是确认、加、减,扫描函数返回按键事件:

typedef enum { KEY_NONE = 0, KEY_OK_SHORT, // OK 短按 KEY_OK_LONG, // OK 长按,返回主界面 KEY_UP, // 数值加 KEY_DOWN // 数值减 } KeyEvent; KeyEvent Key_Scan(void) { if (HAL_GPIO_ReadPin(KEY_OK_Port, KEY_OK_Pin) == GPIO_PIN_RESET) { HAL_Delay(20); // 消抖 if (HAL_GPIO_ReadPin(KEY_OK_Port, KEY_OK_Pin) == GPIO_PIN_RESET) { uint16_t press_ms = 0; while (HAL_GPIO_ReadPin(KEY_OK_Port, KEY_OK_Pin) == GPIO_PIN_RESET) { HAL_Delay(10); press_ms += 10; if (press_ms > 1000) return KEY_OK_LONG; // 长按返回 } return KEY_OK_SHORT; } } // UP 和 DOWN 按键类似,省略 return KEY_NONE; }

按键消抖没有用定时器中断,而是直接在扫描里延时 20ms。对于课程设计这个量级足够了,但如果要做产品级,建议把按键扫描放到定时器中断里,主循环只消费事件。喂食过程中要屏蔽按键,防止用户按到 OK 进入菜单导致状态混乱:SYS_FEEDING 状态里直接不调用Key_Scan(),或者丢弃返回的 KEY_NONE 之外的事件。

4. 常见问题排查与避坑:五个最容易翻车的点

4.1 现象:出料量越喂越少,设定30g实际只有22g

这是我被问得最多的问题。现象是前几次喂食正常,后面每次实际出料都比设定值少,而且差值越来越大。原因主要有两个:一是步进电机转速设置过快,颗粒阻力大时丢步,每次丢几个步,积累下来误差就大了;二是料仓内物料减少后,颗粒下滑压力变小,同一圈数排出的量确实变少。

解决方法是双管齐下:先降低电机转速,把STEP_DELAY_US从 900 调到 1200,这一步能解决大部分丢步问题;然后利用 HX711 称重做闭环修正,喂完后等读数稳定,如果实际出料比目标少超过 2g,再补转若干步。补转的步数按误差值估算,一次修正不到位就多修一次。这样即使颗粒规格变化,最终精度也能稳定在 ±3g 内。

4.2 现象:称重数据漂移,静置时数值波动超过 ±5g

HX711 是差分输入,理论上很稳,但实际使用中最大干扰源有三个:电机震动传导到传感器、电源纹波、以及称重传感器本身受温度影响。我遇到过样机上电时数值正常,电机一转起来读数就开始跳的情况,这是典型的电磁干扰经由地线窜入。

解决按优先级排列:电机不转的时候才读称重,也就是把秤重读取放在喂食完成后的暂停阶段;电源输入端并联 104 和 100uF 电容,HX711 的 AVDD 和主控 3.3V 之间加磁珠;软件上保留去极值平均滤波。还有一个容易被忽略的点:压力传感器和料仓之间要加硬连接,不能用软的泡沫双面胶,否则读数会缓慢漂移,像弹簧一样回弹。

4.3 现象:定时喂食到点不执行,手动触发却正常

出现过一次很隐蔽的问题:定时触发明明进入了CheckFeedSchedule(),但Feed()没有执行。原因是喂食时间段和 OLED 刷新撞在一起。主循环里先刷新 OLED 再检查定时,I2C 刷新要几十毫秒,如果刷屏过程中产生了定时中断标志,轮询模式下主循环还在 I2C 通信里没跳出来,等它跳出来时分钟已经过了,last_min被更新,任务被跳过。

解决方式是把检查定时放在主循环最前面,并且 OLED 刷新不要每一轮都全屏重绘,改成每秒刷一次时间区域,其余时间只刷变化的部分。如果你用中断触发定时,一定要保证中断服务函数里不做长时间操作,只在里面置标志位,真正出料放到主循环处理。

4.4 现象:电机一启动,单片机就复位

这个现象很吓人,第一次遇到时我以为是程序写崩了,后来发现是硬件问题。28BYJ-48 启动瞬间电流可以达到几百毫安,如果 ULN2003 和单片机共用一个 3.3V LDO 供电,电机一转,LDO 输出被拉低到 2V 以下,单片机直接掉电复位。

解决方法是供电分离:5V 电源先进 ULN2003 的 VM 脚,再单独用 AMS1117 给主控供电,两路电源地线在输入端单点相连。另外在电机驱动电源处加一个 470uF 电解电容,给启停瞬间提供瞬时能量。如果复位问题依旧,检查 3.3V 输出端是不是还挂了 OLED、HX711 等多个外设,适当分配不同 LDO。

4.5 现象:掉电后时间归零,设置参数丢失

先说时间归零:STM32 的 RTC 在掉电后靠 VBAT 引脚供电维持走时,如果 VBAT 没接电池,或者电池已经耗尽,重新上电 RTC 时间会回到初始值。检查方法很简单:万用表量 VBAT 电压,低于 2V 就换电池。注意要对地测量,不是对 3.3V 测量。

再说参数丢失:我把参数存到了 Flash,但如果写 Flash 后没有执行 Flash 解锁和擦除步骤,数据其实没写进去,重新上电读出来的是随机值。解决方式是封装一个Settings_Load(),启动时先读魔术字,不对就把默认参数写回 Flash。另外断电测试要等写 Flash 完成后再断电,写一半断电会损坏扇区,程序里要一次性写完整个扇区,不要频繁擦写。

5. 联调、验收与答辩:把设计方案讲成能交付的成果

5.1 分模块验收清单

整套系统焊完后不要直接整机测试,先按模块验收。下面是我用的测试表,每项通过后再进入下一项,最后才做整机联调。

测试项测试方法合格标准
电源上电测量 5V 与 3.3V电压波动不超过 ±5%
按键逐个按下观察串口打印每次按键事件与操作一致,无连发
OLED上电显示主界面无花屏,时间余粮刷新正常
HX711 标定放 100g 砝码验证显示值在 99g~101g 之间
手动出料设定 30g 触发打料连续 5 次误差 ≤ ±3g
定时喂食设置 1 分钟后触发只触发一次,出料量达标
掉电保持断电 10 分钟重新上电时间继续走,参数未丢失

5.2 答辩演示顺序与讲法

答辩时不要一上来就讲代码,先讲需求:自动喂食器解决的是“按时、按量、稳定”三个问题。然后展示系统框图说明你分了几个模块,再现场演示三个关键动作——设置定时、手动出料、掉电重启。最后一个动作用来证明你考虑过可靠性问题。

演示完可以主动讲一个踩过的坑,比如“最初电机转速太快导致丢步,后来通过降低步间延时和称重闭环修正解决”。老师听完会觉得你是真的做完调试过,而不是照抄的别人的代码。整个演示控制在 8 分钟内,重点放在硬件架构和出料精度上,代码细节不用逐行讲。

5.3 一个长期受用的答辩习惯

从那以后我每次做嵌入式课程设计,都强制自己先列一张验收表再开始焊板子,每个模块通过一项就勾一项,整机联调时只排查没有打勾的模块。这样做的好处是答辩前你心里有数:哪些是屋里跑的,哪些是没跑通的,哪些是已知缺陷。没跑通的地方主动说出来并给出解决思路,比被老师问住再承认要好得多。这套基于 STM32 的自动喂食器方案,从需求分析到验收表格都在上面了,希望帮到正在为课程设计发愁的你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 12:40:22

鲲鹏ARM架构部署GitLab全攻略:Docker安装、性能调优与踩坑实录

1. 为什么要在鲲鹏架构上折腾GitLab 第一次在鲲鹏服务器上装GitLab的人&#xff0c;大概率会经历一个"以为十分钟搞定&#xff0c;结果折腾一整天"的过程。原因很简单&#xff1a;GitLab官方提供的安装包和镜像&#xff0c;绝大多数是面向x86_64架构的&#xff0c;而…

作者头像 李华
网站建设 2026/10/21 12:38:12

C#仓库管理系统实战:WinForm+ADO.NET三层架构与库存事务处理

简介&#xff1a;这是一套面向高校计算机相关专业学生与.NET初学者的C#仓库管理系统完整项目源码&#xff0c;可作为课程设计、毕业设计或C#桌面开发练手参考。系统功能覆盖换班管理、单据查询、销售分析、库存管理、统计报表、日常管理与系统设置等模块&#xff0c;并借助Iris…

作者头像 李华
网站建设 2026/10/21 12:38:08

Sicar-Training-show-V16 程序包上机调试与参数配置实战指南

简介&#xff1a;Sicar-Training-show-V16程序是一套面向工业自动化领域学习者的Sicar标准程序训练示例&#xff0c;适合正在接触西门子PLC、PROFINET通信及分布式IO组态的工程师与学员&#xff0c;用于理解标准程序框架、设备描述文件与项目工程结构。压缩包共106个文件&#…

作者头像 李华
网站建设 2026/10/21 12:38:01

前后端数据流向全解析:从浏览器到数据库的七站链路

在正经做技术之前&#xff0c;我一直以为“前后端数据流向”是个面试概念——背熟关键词&#xff0c;面试官满意&#xff0c;自己也满意。直到有一次联调&#xff0c;前端说接口没通&#xff0c;后端说日志里没有请求&#xff0c;两边信息完全对不上&#xff0c;我才意识到自己…

作者头像 李华
网站建设 2026/10/21 12:36:32

SSM+Vue错题管理系统开发全解析:从数据库设计到毕设答辩

作为一个写过不少SSMVue项目的老手&#xff0c;我今年接到的毕设咨询里&#xff0c;错题管理系统出现的频率相当高。仔细想想并不奇怪——这个选题技术栈主流、业务逻辑清晰、功能扩展空间大&#xff0c;既能展示后端架构能力又能体现前端交互水平&#xff0c;而且数据可视化部…

作者头像 李华
网站建设 2026/10/21 12:35:47

Redis哨兵原理与故障转移实战:从部署到运维全解析

1. 起底哨兵机制&#xff1a;先搞清楚它到底解决什么问题 项目标题叫“redis——哨兵”&#xff0c;我第一反应就是有人在搭建或者维护 Redis 高可用架构时&#xff0c;遇到了故障转移的那道坎。其实“哨兵”这个词对应的就是 Redis Sentinel&#xff0c;它不是一个独立的数据库…

作者头像 李华