提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会
文章目录
- 一、非关系型数据库
-
- [1.1 什么是非关系型数据库](#1.1 什么是非关系型数据库)
- [1.2 关系型数据库和非关系型数据库的区别](#1.2 关系型数据库和非关系型数据库的区别)
- [1.3 关系型数据库和非关系型数据库优缺点](#1.3 关系型数据库和非关系型数据库优缺点)
- [1.4 非关系型数据库的作用](#1.4 非关系型数据库的作用)
- 二、Redis安装
-
- [2.1 下载redis](#2.1 下载redis)
- [2.2 修改redis.conf](#2.2 修改redis.conf)
- [2.3 添加systemctl管理(可选)](#2.3 添加systemctl管理(可选))
- [2.4 启动redis并测试](#2.4 启动redis并测试)
- [2.5 redis重要目录介绍](#2.5 redis重要目录介绍)
- [2.6 redis常用命令工具](#2.6 redis常用命令工具)
- [2.7 redis的简单操作](#2.7 redis的简单操作)
- [三、 数据持久化](#三、 数据持久化)
-
- [3.1 基本知识](#3.1 基本知识)
-
- [3.1.1 什么时数据持久化](#3.1.1 什么时数据持久化)
- [3.1.2 持久化的方式有哪些](#3.1.2 持久化的方式有哪些)
- [3.1.3 RDB和AOF特点](#3.1.3 RDB和AOF特点)
- [3.1.4 大部分企业用的哪种方法?](#3.1.4 大部分企业用的哪种方法?)
- [3.2 RDB实战](#3.2 RDB实战)
-
- [3.2.1 配置RDB](#3.2.1 配置RDB)
- [3.2.2 扩展:备份文件导入另一台数据](#3.2.2 扩展:备份文件导入另一台数据)
- [3.3 AOF实战](#3.3 AOF实战)
- 四、Redis主从同步
-
- [4.1 主从同步简介](#4.1 主从同步简介)
- [4.2 主从同步原理](#4.2 主从同步原理)
- [4.3 一主两从实战](#4.3 一主两从实战)
-
- [4.3.1 环境介绍](#4.3.1 环境介绍)
- [4.3.2 主数据库配置](#4.3.2 主数据库配置)
- [4.3.3 从数据库配置](#4.3.3 从数据库配置)
- [4.3.4 测试主从同步](#4.3.4 测试主从同步)
- 五、Redis高可用--哨兵模式
-
- [5.1 高可用--哨兵模式简介](#5.1 高可用--哨兵模式简介)
- [5.2 哨兵模式工作原理](#5.2 哨兵模式工作原理)
- [5.3 哨兵模式实战](#5.3 哨兵模式实战)
-
- [5.3.1 环境介绍](#5.3.1 环境介绍)
- [5.3.2 主数据库配置](#5.3.2 主数据库配置)
- [5.3.3 从数据库配置](#5.3.3 从数据库配置)
- [5.3.4 测试主从同步](#5.3.4 测试主从同步)
- [5.3.5 测试高可用](#5.3.5 测试高可用)
一、非关系型数据库
1.1 什么是非关系型数据库
非关系型数据库(NoSQL,Not Only SQL)是不依赖传统关系模型(表、行、列)的数据库,非关系型数据库则以灵活性、扩展性和高性能为核心,适合互联网、大数据等快速迭代、数据量大的场景
1.2 关系型数据库和非关系型数据库的区别
| 对比维度 | 关系型数据库 | 非关系型数据库 |
|---|---|---|
| 代表数据库 | MySQL、Oracle、PostgreSQL | Redis、MongoDB、HBase |
| 存储数据类型 | 结构化数据,基于表、行、列,需预设固定 Schema(字段定义) | 非结构化/半结构化数据,支持键值对、文档、列族、图等灵活结构,无需固定 Schema |
| 事务支持 | 强事务一致性,支持复杂事务和回滚 | 多数弱化事务,仅核心场景支持 ACID(如 Redis 事务、MongoDB 4.0+ 事务) |
| 查询能力 | 支持 SQL 语句、可以复杂查询 | 不提供sql |
| 存储数据 | 只能使用硬盘存储 | 内存,硬盘或者随机存储器 |
1.3 关系型数据库和非关系型数据库优缺点
| 对比维度 | 关系型数据库 | 非关系型数据库 |
|---|---|---|
| 优点 | 都是表结构,易于维护,sq语言通用,可复杂查询,支持sql | 存储数据的格式灵活,读写速度快 |
| 缺点 | 读写性能差,尤其是海量数据的高效率读写;固定表结构,灵活度稍欠;对于高并发读写需求,硬盘I/O是一个很大的瓶颈 | 不支持sql,无事务处理 |
1.4 非关系型数据库的作用
NoSQL 并非要替代关系型数据库,而是补全其能力短板 ,它以 "牺牲部分事务一致性" 为代价,换取高性能、高扩展和灵活性,成为海量数据、高并发、灵活结构场景的核心支撑 ,像Redis 这类键值型 NoSQL 常被用作缓存层,部署在 SQL 数据库前方,缓存热点数据以减轻 SQL 压力、提升响应速度(如下图)

二、Redis安装
Redis(Remote Dictionary Server)是一款基于内存的高性能键值型非关系型数据库,支持多种数据结构,兼具缓存、持久化、分布式等核心能力,是互联网架构中不可或缺的中间件
redis特点:丰富的数据结构,支持持久化、事务、主从
2.1 下载redis
Redis官网:https://redis.io/downloads/
bash
root@redis:~# wget https://download.redis.io/releases/redis-6.2.7.tar.gz
root@redis:~# ls
redis-6.2.7.tar.gz
root@redis:~# mkdir -p /data/application
root@redis:~# tar xf redis-6.2.7.tar.gz -C /data/application
root@redis:~# mv /data/application/redis-6.2.7/ /data/application/redis
root@redis:~# ls /data/application/
redis
root@redis:~# cd /data/application/redis/
root@redis:/data/application/redis# apt -y install gcc make #centos用yum -y install gcc make
root@redis:/data/application/redis# make #这里只需要编译就行,redis自带的有预编译文件Makefile
2.2 修改redis.conf
bash
root@redis:/data/application/redis# vim redis.conf ---修改如下
bind 0.0.0.0 #允许所有人连接
daemonize yes #开启后台模式将no改为yes
port 6379 #端口号
dir /data/application/redis/data #本地数据库存放持久化数据的目录.redis的数据也会存到硬盘里,开机的时候会读硬盘的数据到内存
root@redis:/data/application/redis# mkdir /data/application/redis/data #创建存放数据的目录
2.3 添加systemctl管理(可选)
bash
root@redis:/data/application/redis# vim /lib/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target #在网络服务启动后启动
[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf --daemonize no # Redis 启动命令及配置文件路径
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 # 停止命令shutdown
[Install]
WantedBy=multi-user.target #当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行
root@redis:/data/application/redis# systemctl daemon-reload
2.4 启动redis并测试
bash
#启动redis
root@redis:/data/application/redis# nohup src/redis-server redis.conf & #启动redis,如果做了上一步直接systemctl start redis
root@redis:/data/application/redis# netstat -tnlp #redis默认监听端口6379
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 1283/systemd-resolv
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1743/sshd
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 9520/redis-server 0
tcp6 0 0 :::21 :::* LISTEN 1524/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1743/sshd
root@redis:/data/application/redis#
bash
#测试
root@redis:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping #ping pong成功
PONG
127.0.0.1:6379> quit #退出
root@redis:/data/application/redis#
2.5 redis重要目录介绍
bash
root@redis:/data/application/redis# tree -L 1 -l
.
├── 00-RELEASENOTES
├── BUGS
├── CONDUCT
├── CONTRIBUTING
├── COPYING
├── data #存储数据的目录
├── deps
├── INSTALL
├── Makefile #redis自带的预编译文件,所以redis只需要make
├── MANIFESTO
├── nohup.out #用nohup启动后会产生的日志输出文件
├── README.md
├── redis.conf #redis主配置文件
├── runtest
├── runtest-cluster
├── runtest-moduleapi
├── runtest-sentinel
├── sentinel.conf #哨兵模式配置文件,用于redis高可用部署
├── src #存放编译后的核心可执行文件
├── tests
├── TLS.md
└── utils
2.6 redis常用命令工具
src/redis-cli #redis的客户端
src/redis-server #redis的服务端
src/redis-check-aof #用于修复出问题的AOF文件
src/redis-sentinel #用于集群管理
2.7 redis的简单操作
bash
root@redis:/data/application/redis# src/redis-cli
127.0.0.1:6379> set name1 lisa #字段赋值
OK
127.0.0.1:6379> get name1 #查询字段
"lisa"
127.0.0.1:6379> set name2 tom
OK
127.0.0.1:6379> get name2
"tom"
127.0.0.1:6379> del name1 #删除字段
(integer) 1
127.0.0.1:6379> get name1
(nil)
bash
#EX和PX
127.0.0.1:6379> set name1 alan EX 5 # EX:设置后5秒内有效
OK
127.0.0.1:6379> get name1
"alan"
127.0.0.1:6379> get name1 #5秒过后该字段失效
(nil)
127.0.0.1:6379> set name3 lili PX 5000 # PX:设置后5000毫秒内有效
OK
127.0.0.1:6379> get name3
"lili"
127.0.0.1:6379> get name3 #5000毫秒后失效
(nil)
bash
#NX和XX
127.0.0.1:6379> set class 101 NX # NX:如果该字段不存在则生效
OK
127.0.0.1:6379> get class
"101"
127.0.0.1:6379> set class 102 NX # 对已经存在的字段不生效
(nil)
127.0.0.1:6379> get class
"101"
127.0.0.1:6379> set class 103 XX # XX:如果该字段存在则生效
OK
127.0.0.1:6379> get class
"103"
127.0.0.1:6379> set class1 104 XX #如果该字段不存在则不生效
(nil)
127.0.0.1:6379> get class1
(nil)
127.0.0.1:6379>
三、 数据持久化
3.1 基本知识
3.1.1 什么时数据持久化
数据持久化就是把数据保存到可永久保存的存储设备中(如磁盘)
3.1.2 持久化的方式有哪些
redis提供了两种持久化方式:RDB和 AOF
RDB :是在不同的时间点,将redis存储的数据生成快照存储到磁盘等介质上,RDB会启动子进程,备份所有数据,当前进程,继续提供数据的读写,当备份完成,才替换老的备份文件
AOF :将redis执行过的所有指令记录下来,然后在下次重新启动时只要把这些指令从前到后再重复执行一遍,就可以实现数据恢复
3.1.3 RDB和AOF特点
| 特性 | RDB | AOF |
|---|---|---|
| 数据持久化方式 | 周期性生成内存数据的快照 | 实时记录所有写操作指令 |
| 对写入的影响 | 不影响数据写入,快照生成时通过子进程处理,主进程继续服务 | 可能轻微影响性能(需实时将指令写入日志) |
| 恢复效率 | 高效,一次性加载整个快照文件还原所有数据 | 相对较低,需重新执行所有指令,指令越多恢复越慢 |
| 数据完整性 | 较差,故障时可能丢失最后一次快照到故障点之间的所有数据 | 较好 |
| 文件体积 | 较小(二进制压缩存储) | 较大(记录所有操作指令) |
3.1.4 大部分企业用的哪种方法?
大部分企业采用RDB+AOF 的混合持久化方案,在这种情况下,如果redis重启,则会优先采用AOF方式来进行数据恢复
3.2 RDB实战
3.2.1 配置RDB
RDB默认开启状态
bash
root@redis:/data/application/redis# pkill redis
root@redis:/data/application/redis# vim redis.conf #修改如下
dbfilename dump.rdb #dbfilename:持久化数据存储在本地的文件
dir /data/application/redis/data
save 900 1 #若在900秒内发生了 至少 1 次写操作,则触发 RDB 快照
save 300 10 #若在300 秒内发生了 至少 10 次写操作,则触发 RDB 快照
save 60 10000 #若在60秒内发生了 至少 10000 次写操作,则触发 RDB 快照
stop-writes-on-bgsave-error yes #持久化如果出错则停止备份,no表明忽略错误继续写文件
rdbcompression yes #压缩备份文件,压缩会额外消耗cpu但网络传输时间变短
root@redis:/data/application/redis# nohup src/redis-server redis.conf & #启动redis
到此rdb模式就配置好了,只要触发条件,data目录下就会有持久化文件
注:每次快照持久化都是将内存数据完整写入到磁盘一次,如果数据量大的话,而且写操作比较多,会引起大量的磁盘I/O,可能会严重影响性能
3.2.2 扩展:备份文件导入另一台数据
有的时候我们需要迁移redis,需要导入数据
bash
root@redis:/data/application/redis# src/redis-cli
127.0.0.1:6379> bgsave #手动备份
127.0.0.1:6379> quit
root@redis:/data/application/redis# ls data/
dump.rdb
#将备份文件导入另一台redis,这里我提前准备好了另一台配置一模一样的redis,
root@redis:~# scp -P 22 /data/application/redis/data/dump.rdb 192.168.136.135:/data/application/redis/data/ #只要把备份文件传送到对方存储数据目录下,启动redis即可导入成功
bash
#第二台redis
root@4:/data/application/redis# nohup src/redis-server redis.conf & #启动
root@4:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get name2 #数据同步成功
"tom"
127.0.0.1:6379> get class
"103"
3.3 AOF实战
AOF默认不开启
bash
root@redis:~# vim /data/application/redis/redis.conf #修改配置文件
appendonly yes #开启aof
appendfilename appendonly.aof #指定aof文件名称
appendfsync everysec #每秒同步一次,这里有三个参数:always,everysec,no
root@redis:~# systemctl start redis
root@redis:~# ls /data/application/redis/data/ #产生备份文件
appendonly.aof dump.rdb
四、Redis主从同步
4.1 主从同步简介
redis主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,很消耗性能的操作就可以由从服务器来处理,比如redis的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低redis的处理性能。主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能
4.2 主从同步原理
- 同步触发 :从服务器主动向主服务器发送
SYNC指令,请求数据同步 - 主库数据快照 :主服务器接收指令后,立即调用
BGSAVE 生成子进程,专门将内存数据持久化为RDB文件;此期间主库的所有写指令会暂存于内存缓存,不影响正常服务 - RDB 文件传输与加载 :
BGSAVE完成后,主服务器将 RDB 文件发送给从服务器;从服务器接收后先写入磁盘,再加载至内存,实现基础数据对齐 - 增量指令同步 :
RDB加载完成后,主服务器将快照期间缓存的写指令,以 Redis 协议格式同步给从服务器,确保数据完全一致
此外,主服务器具备"请求合并"优化:若多个从服务器同时发送 SYNC 指令,主服务器仅执行一次 BGSAVE,再将同一 RDB 文件分发给所有从库,避免资源浪费
4.3 一主两从实战
4.3.1 环境介绍
首先准备三台已经安装好redis的机器
| 主机名 | IP地址 | 服务 | 安装目录 |
|---|---|---|---|
| redis-master | 192.168.136.10 | redis6.2.7 | /data/application/ |
| redis-slave1 | 192.168.136.134 | redis6.2.7 | /data/application/ |
| redis-slave2 | 192.168.136.135 | redis6.2.7 | /data/application/ |
4.3.2 主数据库配置
bash
[root@redis-master redis]# vim redis.conf
protected-mode no #将加密保护关闭,因为我没有设置密码,所以我这里把它关掉
[root@redis-master redis]# nohup src/redis-server redis.conf & #后台启动redis
4.3.3 从数据库配置
bash
#slave1配置
root@redis-slave1:~# cd /data/application/redis/
root@redis-slave1:/data/application/redis# vim redis.conf #添加一行
replicaof 192.168.136.10 6379 #配置主数据库ip加端口
root@redis-slave1:/data/application/redis# nohup src/redis-server redis.conf & #后台启动redis
bash
#slave2配置
root@redis-slave2:~# cd /data/application/redis/
root@redis-slave2:/data/application/redis# vim redis.conf #添加一行
replicaof 192.168.136.10 6379 #配置主数据库ip加端口
root@redis-slave2:/data/application/redis# nohup src/redis-server redis.conf & #后台启动redis
4.3.4 测试主从同步
bash
[root@redis-master redis]# src/redis-cli #登录主数据库
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> info replication #查看主从状态
# Replication
role:master
connected_slaves:2 #表示
slave0:ip=192.168.136.134,port=6379,state=online,offset=266,lag=1
slave1:ip=192.168.136.135,port=6379,state=online,offset=266,lag=0
master_failover_state:no-failover
master_replid:2386e5eaeb2387a62a11a84b98eb737ed3fdddb6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:266
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:266
127.0.0.1:6379> set Name alan #新建测试数据
OK
127.0.0.1:6379> get Name
"alan"
127.0.0.1:6379>
bash
#salve1查看是否同步
root@redis-slave1:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get Name #同步成功
"alan"
#salve2查看是否同步
root@redis-slave2:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get Name #同步成功
"alan"
五、Redis高可用--哨兵模式
5.1 高可用--哨兵模式简介
Redis 自带的 Sentinel(哨兵)工具用于监控集群中主节点状态。当主节点异常时,哨兵会自动执行主从切换:将一个从节点升级为新主节点,原主节点降级为从节点,同时自动更新哨兵配置(sentinel.conf)中的监控目标
5.2 哨兵模式工作原理
- 每个哨兵以每秒钟一次的频率向它所知的Master,Slave以及其他 哨兵 实例发送一个
PING命令 - 如果一个实例距离最后一次有效回复 PING 命令的时间超过
down-after-milliseconds选项所指定的值, 则这个实例会被哨兵标记为主观下线 - 如果一个Master被标记为主观下线,则正在监视这个Master的所有 哨兵 要以每秒一次的频率确认Master的确进入了主观下线状态
- 当有足够数量的 哨兵(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为
客观下线 - 主从切换,这时
从节点会通过选举来成为主节点
5.3 哨兵模式实战
5.3.1 环境介绍
首先准备三台已经安装好redis的机器,哨兵模式的前提是要做主从同步,不然,当主节点故障自动切换到从节点后,从节点没有同步主节点的数据,这样的切换没有意义
| 主机名 | IP地址 | 服务 | 安装目录 |
|---|---|---|---|
| redis-master | 192.168.136.10 | redis6.2.7 | /data/application/ |
| redis-slave1 | 192.168.136.134 | redis6.2.7 | /data/application/ |
| redis-slave2 | 192.168.136.135 | redis6.2.7 | /data/application/ |
注:配置redis时redis.conf文件设置:bind 0.0.0.0
5.3.2 主数据库配置
bash
[root@redis-master redis]# vim sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2 #当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了
sentinel down-after-milliseconds mymaster 3000 #单位毫秒
#若sentinel在该配置值内未能完成failover(故障转移)操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 10000
protected-mode no #如果redis没有设置密码,可以把这个加密模式关掉
[root@redis-master redis]# nohup src/redis-server redis.conf & #后台启动redis
[root@redis-master redis]# nohup src/redis-sentinel sentinel.conf & #启动哨兵模式
5.3.3 从数据库配置
bash
#slave1配置
root@redis-slave1:/data/application/redis# vim sentinel.conf
sentinel monitor mymaster 192.168.136.10 6379 2 #slave上面写的是master的ip
sentinel down-after-milliseconds mymaster 3000 #单位毫秒
#若sentinel在该配置值内未能完成failover(故障转移)操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 10000
protected-mode no #如果redis没有设置密码,可以把这个加密模式关掉
root@redis-slave2:/data/application/redis# nohup src/redis-server redis.conf & #后台启动redis
root@redis-slave1:/data/application/redis# nohup src/redis-sentinel sentinel.conf &
bash
#slave2配置
root@redis-slave2:/data/application/redis# vim sentinel.conf
sentinel monitor mymaster 192.168.136.10 6379 2 #slave上面写的是master的ip
sentinel down-after-milliseconds mymaster 3000 #单位毫秒
#若sentinel在该配置值内未能完成failover(故障转移)操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 10000
protected-mode no #如果redis没有设置密码,可以把这个加密模式关掉
root@redis-slave2:/data/application/redis# nohup src/redis-server redis.conf & #后台启动redis
root@redis-slave2:/data/application/redis# nohup src/redis-sentinel sentinel.conf &
5.3.4 测试主从同步
bash
#验证主从同步
[root@redis-master redis]# src/redis-cli #master创建测试数据
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set addr china
OK
127.0.0.1:6379> get addr
"china"
127.0.0.1:6379> quit
root@redis-slave1:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get addr #slave1同步成功
"china"
root@redis-slave2:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get addr #slave2同步成功
"china"
5.3.5 测试高可用
bash
#停掉master服务,看是否有高可用效果
[root@redis-master redis]# ps aux | grep redis
root 23562 0.1 0.2 165080 9508 ? Ssl 15:10 0:00 src/redis-server 0.0.0.0:6379
root 23789 0.3 0.2 162520 10388 pts/1 Sl 15:15 0:00 src/redis-sentinel *:26379 [sentinel]
root 23960 0.0 0.0 112824 988 pts/1 S+ 15:18 0:00 grep --color=auto redis
[root@redis-master redis]# kill 23562 #kill掉server,别把kill掉了
[root@redis-master redis]# ps aux | grep redis
root 23789 0.3 0.2 162520 10488 pts/1 Sl 15:15 0:00 src/redis-sentinel *:26379 [sentinel]
root 23986 0.0 0.0 112824 988 pts/1 S+ 15:18 0:00 grep --color=auto redis
[root@redis-master redis]#
bash
#查看slave1或slave2
root@redis-slave1:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> info replication #查看slave1的主从情况,可见此时slave1选举成为主节点
# Replication
role:master
connected_slaves:1 #表示有一个从节点是192.168.136.135
slave0:ip=192.168.136.135,port=6379,state=online,offset=567315,lag=1
master_failover_state:no-failover
master_replid:05b52bddd888820c8be743d1b6ee00685f81e47e
master_replid2:63aedef95111d7ff5361dd643e4867862a0cd5fc
master_repl_offset:567474
second_repl_offset:51891
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:567474
127.0.0.1:6379>
bash
#验证主从同步
root@redis-slave1:/data/application/redis# src/redis-cli
127.0.0.1:6379> set name lisa #slave1创建测试数据
OK
127.0.0.1:6379> get name
"lisa"
127.0.0.1:6379>
root@redis-slave2:/data/application/redis# src/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get name #slave2同步成功
"lisa"
127.0.0.1:6379>
注:
文中若有疏漏,欢迎大家指正赐教。
本文为100%原创,转载请务必标注原创作者,尊重劳动成果。
求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~