Redis 从零到主从复制:一篇保姆级实操教程
2026/9/2 5:57:48 网站建设 项目流程

Redis 从零到主从复制:一篇保姆级实操教程(nano 编辑版)

环境:Ubuntu 22.04 + Redis 6.x,全程使用nano 手工编辑配置文件
密码约定:YourStrongPassword,执行时请替换成你自己的强密码

目录

  1. nano 必会快捷键
  2. 安装 Redis
  3. 修改端口 + 密码
  4. 常用命令:五大基本类型
  5. 持久化:RDB + AOF
  6. 主从复制(开发环境)
  7. 踩坑速查表
  8. 总结与下一步

0. nano 必会快捷键(全程只用这 4 个)

快捷键作用
Ctrl+W查找关键词(定位要改的行)
Ctrl+\替换:输入旧内容 → 回车 → 新内容 → 回车 → 按A全部替换
Ctrl+O保存
Ctrl+X退出

1. 安装 Redis

apt-get update apt-get install -y redis-server systemctl enable redis-server systemctl start redis-server systemctl status redis-server # 看到 Active: active (running) 即成功

提示:若提示wget: command not found,先执行apt-get install -y wget;apt 报错就改用apt-get


2. 修改端口 + 密码(nano 版)

默认 6379 端口、无密码,暴露公网非常危险。改配置前先备份:

cp /etc/redis/redis.conf /etc/redis/redis.conf.bak nano /etc/redis/redis.conf

Ctrl+W逐项定位、Ctrl+\替换,共改 3 处:

关键词改成说明
portport 6380端口
bindbind 127.0.0.1(本机)或bind 0.0.0.0(远程)只本机用保持 127.0.0.1
requirepassrequirepass YourStrongPassword若原行带#注释,删掉#再改

检查并重启测试:

grep -nE "^(port|requirepass|bind)" /etc/redis/redis.conf # 预期:port 6380 / requirepass YourStrongPassword / bind 127.0.0.1 systemctl restart redis-server redis-cli -p 6380 -a YourStrongPassword ping # 返回 PONG 即成功

注意(远程连接):绑定了0.0.0.0时,记得在云厂商安全组和宝塔防火墙(若装了)放行 6380 端口的 TCP 入方向。允许外网连接必须用强密码,否则等于把服务器钥匙送给黑客。


3. 常用命令:五大基本类型

连接客户端:

redis-cli -p 6380 -a YourStrongPassword # 出现 127.0.0.1:6380> 提示符

3.1 String(字符串)——计数器、缓存

SET name zzy # 存 GET name # 取 INCR counter # 自增 EXPIRE name 60 # 60 秒后过期 TTL name # 查看剩余秒数(-1 永不过期) DEL name # 删

3.2 Hash(哈希)——存对象

HSET user:1 name zzy age 25 city hangzhou # 存对象字段 HGET user:1 name # 取单个字段 HGETALL user:1 # 取全部字段 HDEL user:1 age # 删字段

3.3 List(列表)——消息队列

LPUSH mylist a b c # 头部插入 RPUSH mylist d # 尾部插入 LRANGE mylist 0 -1 # 查看全部 LPOP mylist # 头部弹出 LLEN mylist # 长度

3.4 Set(集合)——自动去重

SADD myset apple banana apple # 重复自动忽略 SMEMBERS myset # 只有一个 apple SISMEMBER myset apple # 判断是否存在 SREM myset apple # 删成员

3.5 Sorted Set(有序集合)——排行榜

ZADD rank 100 zzy 80 tom 95 jerry # 分数 成员 ZREVRANGE rank 0 -1 WITHSCORES # 从大到小(排行榜) ZRANGE rank 0 -1 WITHSCORES # 从小到大

3.6 通用操作

KEYS * # 查看所有 key(生产慎用) EXISTS key # 判断存在 DEL key # 删除 FLUSHALL # 清空所有数据(极其危险!) EXIT # 退出

4. 持久化:RDB + AOF

对比RDB 快照AOF 日志
原理定时把内存数据拍快照存盘把每条写命令记到日志
文件dump.rdbappendonly.aof
安全性可能丢最后一次快照后的数据everysec 最多丢 1 秒
默认开启关闭

怎么选:开发环境 RDB 够用;生产环境建议两者都开。

4.1 开启 AOF(nano 版)

nano /etc/redis/redis.conf
关键词改成
appendonlyappendonly yes(把 no 改 yes)
appendfsyncappendfsync everysec(取消注释即可)

确认并验证:

grep -nE "^(save |appendonly|appendfsync|dbfilename)" /etc/redis/redis.conf # 预期:save 900 1 / save 300 10 / save 60 10000 / appendonly yes / appendfsync everysec / dbfilename dump.rdb systemctl restart redis-server redis-cli -p 6380 -a YourStrongPassword INFO persistence | grep aof_enabled # aof_enabled:1 即 AOF 已开启

4.2 实战验证:重启数据不丢

redis-cli -p 6380 -a YourStrongPassword SET test_persistence "hello redis" BGSAVE # 触发 RDB 快照 EXIT systemctl restart redis-server redis-cli -p 6380 -a YourStrongPassword GET test_persistence # 返回 "hello redis" —— 持久化生效

5. 主从复制(开发环境)

作用:读写分离(主写从读)、数据备份高可用基础(主挂了切从)。开发环境不用买第二台服务器,同一台机器跑两个实例即可模拟:

角色端口说明
主节点 Master6380负责读写
从节点 Slave6381只读,自动同步主节点数据

5.1 创建从节点配置并 nano 编辑

cp /etc/redis/redis.conf /etc/redis/redis_6381.conf nano /etc/redis/redis_6381.conf

改动 1Ctrl+\替换以下 4 项(按A全部替换):

原内容改成
port 6380port 6381
/var/run/redis/redis-server.pid/var/run/redis/redis_6381.pid
/var/log/redis/redis-server.log/var/log/redis/redis_6381.log
dbfilename dump.rdbdbfilename dump_6381.rdb

改动 2:再改下面两行为no,否则手动启动从节点时不会后台运行、终端会被占住:

原内容改成
daemonize nodaemonize yes
supervised systemdsupervised no

改动 3:光标移到文件末尾,追加主从配置:

replicaof 127.0.0.1 6380 masterauth YourStrongPassword

注意:两台服务器时把127.0.0.1换成主节点真实 IP;masterauth填主节点的密码(与第 2 步requirepass一致)。保存退出(Ctrl+OCtrl+X)。

5.2 启动从节点

redis-server /etc/redis/redis_6381.conf ss -tlnp | grep 6381 # 看到 0.0.0.0:6381 即启动成功

5.3 验证同步

主节点写入:

redis-cli -p 6380 -a YourStrongPassword SET master_key "data from master" EXIT

从节点读取:

redis-cli -p 6381 -a YourStrongPassword GET master_key INFO replication EXIT

三个成功标志:

"data from master" # 数据已同步 role:slave # 角色是从节点 master_link_status:up # 与主节点连接正常

回主节点看从机状态:

redis-cli -p 6380 -a YourStrongPassword INFO replication # role:master # connected_slaves:1 # slave0:ip=127.0.0.1,port=6381,state=online,...

提示:从节点默认只读,对它写数据会报READONLY错误——这是正常现象,不是 bug。


6. 踩坑速查表

现象原因 / 解决
nano 报 “File is being edited”上个 nano 没退干净,回车选Yes强制打开
客户端连接10060超时端口没放行:检查云厂商安全组 + 宝塔防火墙入方向
外网连不上、本地能连安全组没放行 /bind没改0.0.0.0,用ss -tlnp \| grep 端口查监听
主从master_link_status:downmasterauth密码写错 / 主节点地址端口写错 / 端口没放行
从节点READONLY报错从节点只读属性,属正常现象

7. 总结与下一步

已完成:安装配置(端口+密码)→ 五大基本类型增删改查 → RDB+AOF 持久化 → 主从复制并验证同步。

下一步可以学什么?

  • Spring Boot / Django 等框架集成 Redis
  • Redis 事务、发布订阅、Lua 脚本
  • 生产环境高可用:哨兵(Sentinel)模式
  • 大规模场景:Redis Cluster 集群

全文完 · 基于 Ubuntu 22.04 + Redis 6.x 实测整理

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询