redis

本文详细介绍了Redis的部署、使用、持久化存储(RDB和AOF)以及主从模式和集群配置。Redis是一个快速的内存数据库,支持多种数据结构,通过持久化可以保证数据安全。在主从模式中,数据可以在多个节点间备份,而在集群模式下,实现了高可用性和数据分布。
摘要由CSDN通过智能技术生成

redis部署与使用

官网地址:https://redis.io/
Redis和Memcached是非关系型数据库也称为NoSQL数据库,MySQL、Mariadb、SQL Server、PostgreSQL、Oracle 数据库属于关系型数据(RDBMS, Relational Database Management System)

Redis(Remote Dictionary Server)在2009年发布,开发者Salvatore Sanfilippo是意大利开发者,他本想为自己的公司开发一个用于替换MySQL的产品Redis,但是没有想到他把Redis开源后大受欢迎,短短几年,Redis就有了很大的用户群体,目前国内外使用的公司有GitHub、新浪微博、 知乎网等
redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcached,但相比memcached,redis还提供了易扩展、高性能、具备数据持久性等功能。
Redis在高并发、低延迟环境要求比较高的环境使用量非常广泛,目前redis在DB-Engine月排行榜https://db-engines.com/en/ranking 中一直比较靠前,而且一直是键值型存储类的首位。

Redis 特性

  • 速度快: 10W QPS,基于内存,C语言实现
  • 单线程
  • 持久化
  • 支持多种数据结构
  • 支持多种编程语言
  • 功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能
  • 简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单
  • 主从复制
  • 支持高可用和分布式

redis安装及使用

官方下载地址:http://download.redis.io/releases/

yum安装redis

在centos系统上需要安装epel源

[root@node5 ~]# yum info redis
[root@node5 ~]# yum install -y redis
[root@node5 ~]# systemctl start redis
[root@node5 ~]# redis-cli 
127.0.0.1:6379> ping
PONG

127.0.0.1:6379> info server
# Server
redis_version:3.2.12
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7897e7d0e13773f
redis_mode:standalone
os:Linux 3.10.0-693.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:1821
run_id:73ce09eb1ef66af7bfa49f53f5eeb2c96a193685
tcp_port:6379
uptime_in_seconds:22
uptime_in_days:0
hz:10
lru_clock:2484709
executable:/usr/bin/redis-server
config_file:/etc/redis.conf

编译安装redis

下载当前最新release版本redis 源码包:http://download.redis.io/releases/

####ubuntu 1804
root@node03:~# wget https://download.redis.io/releases/redis-6.2.2.tar.gz
root@node03:~# apt install -y libjemalloc-dev gcc libsystemd-dev  make
root@node03:~# useradd -r -s /sbin/nologin redis
root@node03:~# tar xf redis-6.2.2.tar.gz
root@node03:~# cd redis-6.2.2/
root@node03:~/redis-6.2.2# make USE_SYSTEMD=yes PREFIX=/usr/local/redis  install

root@node02:~/redis-6.2.2# mkdir  /usr/local/redis/{etc,logs,data,run}
root@node02:~/redis-6.2.2# cp redis.conf /usr/local/redis/etc
root@node02:~/redis-6.2.2# cp utils/systemd-redis_server.service /lib/systemd/system/redis.service
root@node02:~/redis-6.2.2# vim /lib/systemd/system/redis.service

[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
#Before=your_application.service another_example_application.service
#AssertPathExists=/var/lib/redis
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --supervised systemd --daemonize yes
## Alternatively, have redis-server load a configuration file:
#ExecStart=/usr/local/bin/redis-server /path/to/your/redis.conf
LimitNOFILE=65535
NoNewPrivileges=yes
#OOMScoreAdjust=-900
#PrivateTmp=yes
Type=notify
TimeoutStartSec=infinity
TimeoutStopSec=infinity
UMask=0077
User=redis
Group=redis
WorkingDirectory=/usr/local/redis

[Install]
WantedBy=multi-user.target

root@node02:~/redis-6.2.2# ln -s /usr/local/redis/bin/redis-* /usr/bin/
root@node02:~/redis-6.2.2# chown -R redis. /usr/local/redis/
root@node02:~/redis-6.2.2# systemctl daemon-reload
root@node02:~/redis-6.2.2# systemctl start redis
root@node02:~/redis-6.2.2# redis-cli ##连接测试

redis持久化存储方式

Redis 虽然是一个内存级别的缓存程序,也就是redis 是使用内存进行数据的缓存的,但是其可以将内存的数据按照一定的策略保存到硬盘上,从而实现数据持久保存的目的,目前redis支持两种不同方式的数据持久化保存机制,分别是RDB和AOF

RDB模式

RDB(Redis DataBase):基于时间的快照,其默认只保留当前最新的一次快照,特点是执行速度比较快,缺点是可能会丢失从上次快照到当前时间点之间未做快照的数据。

RDB配置示例

root@user:~# vim /usr/local/redis/etc/redis.conf
....
save 300 1   #开启此配置项
dbfilename dump_6379.rdb
dir "/usr/local/redis/data"     #编泽编译安装,默认RDB文件存放在启动redis的工作目录,建议明确指定存入目录
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes

root@user:~# systemctl start redis

##查看/usr/local/redis/data/目录下生成的文件
root@user:~# ls -lrt /usr/local/redis/data/
total 8
-rw------- 1 redis redis    6 Mar 11 07:27 redis_6379.pid


##写入key测试
root@user:~# vim redis_test.sh
#!/bin/bash
NUM=100
#PASS=123456
for i in `seq $NUM`;do
  #redis-cli -h 127.0.0.1 -a "$PASS" --no-auth-warning set key${i} value${i}
  redis-cli -h 127.0.0.1 set key${i} value${i}
  echo "key${i} value${i} 写入完成"
done
echo "$NUM个key写入到Redis完成"

root@user:~# bash redis_test.sh
....
key98 value98 写入完成
OK
key99 value99 写入完成
OK
key100 value100 写入完成
100个key写入到Redis完成


##再一次查看/usr/local/redis/data/目录下生成的文件
root@user:~# ls -lrt /usr/local/redis/data/
total 8
-rw------- 1 redis redis    6 Mar 11 07:27 redis_6379.pid
-rw------- 1 redis redis 1582 Mar 11 07:37 dump_6379.rdb


root@user:~# cp /usr/local/redis/data/dump_6379.rdb /tmp
root@user:~# ls -lrt /tmp/dump_6379.rdb 
-rw------- 1 root root 1582 Mar 11 07:40 /tmp/dump_6379.rdb


##通过备份dump_6379.rdb文件恢复测试
root@user:~# redis-cli 
127.0.0.1:6379> keys key*
...
 98) "key33"
 99) "key90"
100) "key7"
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> keys key*
(empty array)


root@user:~# systemctl stop redis
root@user:~# rm -f /usr/local/redis/data/*
root@user:~# cp /tmp/dump_6379.rdb /usr/local/redis/data/
root@user:~# chown redis. /usr/local/redis/data/dump_6379.rdb 
root@user:~# systemctl start redis
root@user:~# ls -lrt /usr/local/redis/data/
total 8
-rw------- 1 redis redis 1582 Mar 11 07:44 dump_6379.rdb
-rw------- 1 redis redis    6 Mar 11 07:45 redis_6379.pid


root@user:~# redis-cli 
127.0.0.1:6379> keys key*
...
 98) "key28"
 99) "key95"
100) "key38"

AOF模式

AOF:AppendOnylFile,按照操作顺序依次将操作追加到指定的日志文件末尾

AOF和RDB一样使用了写时复制机制,AOF默认为每秒钟fsync一次,即将执行的命令保存到AOF文件当中,这样即使redis服务器发生故障的话最多只丢失1秒钟之内的数据,也可以设置不同的fsync策略,或者设置每次执行命令的时候执行fsync,fsync会在后台执行线程,所以主线程可以继续处理用户的正常请求而不受到写入AOF文件的IO影响。

root@user:~# vim /usr/local/redis/etc/redis.conf
appendonly yes
appendfilename "appendonly.aof"   #文本文件AOF的文件名,存放在dir指令指定的目录中
appendfsync everysec      #aof持久化策略的配置
dir "/usr/local/redis/data"


root@user:~# systemctl start redis
root@user:~# ls -lrt /usr/local/redis/data/
total 8
-rw------- 1 redis redis    6 Mar 11 08:02 redis_6379.pid
-rw------- 1 redis redis 3707 Mar 11 08:02 appendonly.aof
root@user:~# redis-cli 
127.0.0.1:6379> keys key*
...
 98) "key33"
 99) "key90"
100) "key7"


#通过备份的appendonly.aof恢复数据
root@user:~# cp /usr/local/redis/data/appendonly.aof /tmp/
root@user:~# ls -lrt /tmp/appendonly.aof 
-rw------- 1 root root 3707 Mar 11 08:02 /tmp/appendonly.aof

root@user:~# redis-cli 
127.0.0.1:6379> keys key*
...
 98) "key33"
 99) "key90"
100) "key7"
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> keys key*
(empty array)


root@user:~# systemctl stop redis
root@user:~# rm -f /usr/local/redis/data/*
root@user:~# cp /tmp/appendonly.aof /usr/local/redis/data/
root@user:~# chown redis. /usr/local/redis/data/appendonly.aof
root@user:~# systemctl start redis
root@user:~# ls -lrt /usr/local/redis/data/
total 8
-rw------- 1 redis redis 3707 Mar 11 08:06 appendonly.aof
-rw------- 1 redis redis    6 Mar 11 08:07 redis_6379.pid


root@user:~# redis-cli 
127.0.0.1:6379> keys key*
...
 98) "key78"
 99) "key85"
100) "key54"


redis集群配置主从模式

主备模式(master/slave),可以实现Redis数据的跨主机备份。

slave主要配置

Redis Slave 也要开启持久化并设置和master同样的连接密码,因为后期slave会有提升为master的可能,Slave端切换master同步后会丢失之前的所有数据。
一旦某个Slave成为一个master的slave,Redis Slave服务会清空当前redis服务器上的所有数据并将master的数据导入到自己的内存,但是断开同步关系后不会删除当前已经同步过的数据。

##master节点
172.20.22.27:6379> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:40035516cfc0bc114a27a855134bf1fa069e35fb
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:336
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:336

172.20.22.27:6379> set key1 value1
OK
172.20.22.27:6379> get key1
"value1"


###slave节点设置master的IP和端口,4.0版之前的指令为slaveof MasterIP Port
172.20.22.26:6379> replicaof 172.20.22.27 6379
OK

##查看同步日志
root@node4:~# tail -f /usr/local/redis/logs/redis_6379.log

##查看当前slave状态
172.20.22.26:6379> info replication
# Replication
role:slave
master_host:172.20.22.27
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:40035516cfc0bc114a27a855134bf1fa069e35fb
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14


##保存配置到redis.conf
287 replicaof  172.20.22.27 6379 #指定master的IP和端口号
294 masterauth 123456    #master如果有密码需要设置


##重启slave验证
root@node4:~# systemctl restart redis
root@node4:~# redis-cli -h 172.20.22.26
172.20.22.26:6379> info replication
# Replication
role:slave
master_host:172.20.22.27
master_port:6379
master_link_status:up
....

##验证slave数据
172.20.22.26:6379> get key1
"value1"


###slave状态为只读无法写入数据
172.20.22.26:6379> set k1 v1
(error) READONLY You can't write against a read only replica.

redis集群-cluster

主从架构无法实现master和slave角色的自动切换,即当master出现redis服务异常、主机断电、磁盘损坏等问题导致master无法使用,而redis高可用无法实现自故障转移(将slave提升为master),需要手动改环境配置才能切换到slave redis服务器,另外也无法横向扩展Redis服务的并行写入性能

Redis 集群实现方式:

  • 客户端分片
  • 代理分片
  • Redis Cluster

Redis Cluster特点

  1. 所有Redis节点使用(PING机制)互联
  2. 集群中某个节点的是否失效,是由整个集群中超过半数的节点监测都失效,才能算真正的失效
  3. 客户端不需要proxy即可直接连接redis,应用程序需要写全部的redis服务器IP
  4. redis cluster把所有的redis node 平均映射到 0-16383个槽位(slot)上,读写需要到指定的redis node上进行
  5. 操作,因此有多少个redis node相当于redis 并发扩展了多少倍,每个redis node 承担16384/N个槽位
  6. Redis cluster预先分配16384个(slot)槽位,当需要在redis集群中写入一个key -value的时候,会使用
  7. CRC16(key) mod 16384之后的值,决定将key写入值哪一个槽位从而决定写入哪一个Redis节点上,从而有效解决单机瓶颈。

Redis cluster架构

假如三个主节点分别是:A, B, C 三个节点,采用哈希槽 (hash slot)的方式来分配16384个slot 的话,它们三个节点分别承担的slot 区间是

节点A覆盖 0-5460
节点B覆盖 5461-10922
节点C覆盖 10923-16383

创建redis cluster集群的前提

  1. 每个redis节点采用相同的配置、相同的密码、相同的redis版本
  2. 每个节点必须开启的参数 cluster-enabled yes #必须开启集群状态
  3. 所有redis服务器必须没有任何数据
  4. 先启动为单机redis且没有任何key value

创建集群

服务器1:172.20.22.30 6379 6380

服务器2:172.20.22.27 6379 6380

服务器3:172.20.22.28 6379 6380

--cluster-replicas 1 表示每个master对应一个slave节点

root@node02:~# redis-cli -a 123456 --cluster create 172.20.22.30:6379 172.20.22.30:6380 172.20.22.27:6379 172.20.22.27:6380 172.20.22.28:6379 172.20.22.28:6380 --cluster-replicas 1
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.20.22.27:6380 to 172.20.22.30:6379
Adding replica 172.20.22.28:6380 to 172.20.22.27:6379
Adding replica 172.20.22.30:6380 to 172.20.22.28:6379
M: 8f31c28eb816112704d392b2aa7f56b0c813b084 172.20.22.30:6379  #带M的为master
   slots:[0-5460] (5461 slots) master      #当前master的槽位起始和结束位
S: fba06348055fd045a80d7805b7cb8686dd476080 172.20.22.30:6380  #带S的为slave
   replicates 5377f8460794e77fa554a450f5bdcf5bda86dd13
M: 7cc60dc11ed3777d37696b0984c1c26913352893 172.20.22.27:6379
   slots:[5461-10922] (5462 slots) master
S: 1287deffd5439a568623e3caf2ab12b93a811bff 172.20.22.27:6380
   replicates 8f31c28eb816112704d392b2aa7f56b0c813b084
M: 5377f8460794e77fa554a450f5bdcf5bda86dd13 172.20.22.28:6379
   slots:[10923-16383] (5461 slots) master
S: 723bef6e0fb7920373e684270254f3a1a79c65f4 172.20.22.28:6380
   replicates 7cc60dc11ed3777d37696b0984c1c26913352893
Can I set the above configuration? (type 'yes' to accept): yes  #输入yes自动创建集群
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 172.20.22.30:6379)
M: 8f31c28eb816112704d392b2aa7f56b0c813b084 172.20.22.30:6379  #master的ID及端口
   slots:[0-5460] (5461 slots) master     #已经分配的槽位
   1 additional replica(s)      #分配了一个slave
S: 723bef6e0fb7920373e684270254f3a1a79c65f4 172.20.22.28:6380
   slots: (0 slots) slave       #slave没有分配槽位
   replicates 7cc60dc11ed3777d37696b0984c1c26913352893
S: 1287deffd5439a568623e3caf2ab12b93a811bff 172.20.22.27:6380
   slots: (0 slots) slave
   replicates 8f31c28eb816112704d392b2aa7f56b0c813b084
S: fba06348055fd045a80d7805b7cb8686dd476080 172.20.22.30:6380
   slots: (0 slots) slave
   replicates 5377f8460794e77fa554a450f5bdcf5bda86dd13
M: 5377f8460794e77fa554a450f5bdcf5bda86dd13 172.20.22.28:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 7cc60dc11ed3777d37696b0984c1c26913352893 172.20.22.27:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.   #所有节点槽位分配完成
>>> Check for open slots...     #检查打开的槽位
>>> Check slots coverage...     #检查插槽覆盖范围
[OK] All 16384 slots covered.   #所有槽位(16384个)分配完成


观察以上结果,可以看到3组master/slave
master:172.20.22.30:6379 ---slave:172.20.22.27:6380
master:172.20.22.27:6379 ---slave:172.20.22.28:6380
master:172.20.22.28:6379 ---slave:172.20.22.30:6380

查看主从状态

172.20.22.30:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.20.22.27,port=6380,state=online,offset=770,lag=0
master_failover_state:no-failover
master_replid:fd02d9c4e76776a6a8fe5430aaaf2250e41bac90
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:770
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:770

172.20.22.27:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.20.22.28,port=6380,state=online,offset=798,lag=1
master_failover_state:no-failover
master_replid:3e1e96780ed5cab1bd44ddd5cac2c681af1edc5f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:798
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:798

172.20.22.28:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.20.22.30,port=6380,state=online,offset=938,lag=0
master_failover_state:no-failover
master_replid:c71c583fa3b47abb44b84fb8a3ea932d05cc411c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:938
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:938

验证集群状态

root@node03:~# redis-cli -a 123456 cluster info
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:5
cluster_stats_messages_ping_sent:720
cluster_stats_messages_pong_sent:750
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:1471
cluster_stats_messages_ping_received:750
cluster_stats_messages_pong_received:721
cluster_stats_messages_received:1471

查看集群node对应关系

root@node03:~# redis-cli -a 123456 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
1287deffd5439a568623e3caf2ab12b93a811bff 172.20.22.27:6380@16380 slave 8f31c28eb816112704d392b2aa7f56b0c813b084 0 1646910698018 1 connected
5377f8460794e77fa554a450f5bdcf5bda86dd13 172.20.22.28:6379@16379 myself,master - 0 1646910699000 5 connected 10923-16383
723bef6e0fb7920373e684270254f3a1a79c65f4 172.20.22.28:6380@16380 slave 7cc60dc11ed3777d37696b0984c1c26913352893 0 1646910701127 3 connected
fba06348055fd045a80d7805b7cb8686dd476080 172.20.22.30:6380@16380 slave 5377f8460794e77fa554a450f5bdcf5bda86dd13 0 1646910700098 5 connected
8f31c28eb816112704d392b2aa7f56b0c813b084 172.20.22.30:6379@16379 master - 0 1646910699057 1 connected 0-5460
7cc60dc11ed3777d37696b0984c1c26913352893 172.20.22.27:6379@16379 master - 0 1646910698000 3 connected 5461-10922

模拟master故障

对应的slave节点自动提升为新master

#模拟172.20.22.28:6379节点出故障,需要相应的数秒故障转移时间
root@node03:~# systemctl stop redis
root@node03:~# redis-cli -a 123456 --cluster info 172.20.22.30:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 172.20.22.28:6379: Connection refused
172.20.22.30:6379 (8f31c28e...) -> 32 keys | 5461 slots | 1 slaves.
172.20.22.30:6380 (fba06348...) -> 36 keys | 5461 slots | 0 slaves.
172.20.22.27:6379 (7cc60dc1...) -> 32 keys | 5462 slots | 1 slaves.
[OK] 100 keys in 3 masters.
0.01 keys per slot on average.

root@node03:~# redis-cli -a 123456 --cluster check 172.20.22.30:6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Could not connect to Redis at 172.20.22.28:6379: Connection refused
172.20.22.30:6379 (8f31c28e...) -> 32 keys | 5461 slots | 1 slaves.
172.20.22.30:6380 (fba06348...) -> 36 keys | 5461 slots | 0 slaves.
172.20.22.27:6379 (7cc60dc1...) -> 32 keys | 5462 slots | 1 slaves.
[OK] 100 keys in 3 masters.
0.01 keys per slot on average.
>>> Performing Cluster Check (using node 172.20.22.30:6379)
M: 8f31c28eb816112704d392b2aa7f56b0c813b084 172.20.22.30:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 723bef6e0fb7920373e684270254f3a1a79c65f4 172.20.22.28:6380
   slots: (0 slots) slave
   replicates 7cc60dc11ed3777d37696b0984c1c26913352893
S: 1287deffd5439a568623e3caf2ab12b93a811bff 172.20.22.27:6380
   slots: (0 slots) slave
   replicates 8f31c28eb816112704d392b2aa7f56b0c813b084
M: fba06348055fd045a80d7805b7cb8686dd476080 172.20.22.30:6380
   slots:[10923-16383] (5461 slots) master
M: 7cc60dc11ed3777d37696b0984c1c26913352893 172.20.22.27:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


root@node03:~# redis-cli -a 123456 -h 172.20.22.30 -p 6380
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
172.20.22.30:6380> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:7ce95f6029cbcd4efb9da4690b6327d0f13c2f05
master_replid2:c71c583fa3b47abb44b84fb8a3ea932d05cc411c
master_repl_offset:3743
second_repl_offset:3744
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3743


#恢复172.20.22.28:6379节点,查看自动生成的配置文件,可以查看该节点自动成为slave节点
root@node03:~# cat /usr/local/redis/data/nodes-6379.conf 
fba06348055fd045a80d7805b7cb8686dd476080 172.20.22.30:6380@16380 master - 0 1646911955769 7 connected 10923-16383
7cc60dc11ed3777d37696b0984c1c26913352893 172.20.22.27:6379@16379 master - 1646911955764 1646911955755 3 connected 5461-10922
5377f8460794e77fa554a450f5bdcf5bda86dd13 172.20.22.28:6379@16379 myself,slave fba06348055fd045a80d7805b7cb8686dd476080 0 1646911955754 7 connected
8f31c28eb816112704d392b2aa7f56b0c813b084 172.20.22.30:6379@16379 master - 0 1646911955768 1 connected 0-5460
1287deffd5439a568623e3caf2ab12b93a811bff 172.20.22.27:6380@16380 slave 8f31c28eb816112704d392b2aa7f56b0c813b084 1646911955764 1646911955754 1 connected
723bef6e0fb7920373e684270254f3a1a79c65f4 172.20.22.28:6380@16380 slave 7cc60dc11ed3777d37696b0984c1c26913352893 0 1646911955759 3 connected
vars currentEpoch 7 lastVoteEpoch 0


172.20.22.30:6380> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=172.20.22.28,port=6379,state=online,offset=3757,lag=0
master_failover_state:no-failover
master_replid:7ce95f6029cbcd4efb9da4690b6327d0f13c2f05
master_replid2:c71c583fa3b47abb44b84fb8a3ea932d05cc411c
master_repl_offset:3757
second_repl_offset:3744
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3757

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值