Redis单节点、主从、哨兵、去中心化集群部署

Redis单节点、主从、哨兵、去中心化集群部署

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

一、部署说明

  • Redis单节点

    单台redis服务部署启动即可

  • Redis主从复制

    • 复制特性
      使用异步复制
      一个主服务器可以有多个从服务器
      一个从服务器可以有自己的从服务器
      复制功能不会阻塞主服务器
      可以通过复制功能来让主服务器免于执行持久化操作,由从服务器去执行持久化操作即可。
      关闭主服务器持久化时,复制功能的数据是安全的。
      当配置redis复制功能时,强烈建议打开主服务器的持久化功能,否则的话,由于延迟等问题应该要避免部署服务自动拉起。

    • redis的策略:
      无论如何,首先会尝试进行部分同步,如不成功,要求从服务器进行全同步,并启动BGSAVE…BGSAVE结束后,传输RDB文件;如果成功,允许从服务器进行部分同步,并传输积压空间中的数据。
      主从同步的机制:
      从服务器向主服务器发送SYNC命令。
      接到SYNV命令的主服务器会调用BGSAVE命令,创建一个RDB文件,并使用缓冲区记录接下来执行的所有写命令。
      当主服务器执行完BGSAVE命令时,它会向从服务器发送RDB文件,而从服务器则会接受并载入这个文件。
      主服务器将缓冲区储存的所有写命令发送给从服务器执行。

    • Redis命令的传播:
      在从服务器完成同步之后,主服务器每执行一个写命令,它都会将被执行的写命令发送给从服务器执行,这个操作被称为“命令传播”(command propagate)
      客户端---->发送写命令---->主服务器----->发送写命令----->从服务器
      命令传播是一个持续的过程:只要复制仍再继续,命令传播就会一直进行,是的主从服务器的状态可以一直保持一致。

    • Redis复制的一致性问题:
      在读写分离环境下,客户端向主服务器发送写命令SET n 10086 , 主服务器在执行这个写命令之后,向客户端返回回复,并将这个写命令传播给从服务器。
      接到回复的客户端继续向从服务器发送读命令GET n , 并且因为网络状态的原因,客户端的GET命令比主服务器传播的SET命令更快到达了从服务器。
      因为从服务器键 n 的值还未被更新,所以客户端在从服务器读取到的将是一个错误(过期)的 n 值。

    • Redis复制安全性提升:
      主服务器只在至少N个从服务器的情况下,才执行写操作。从Redis2.8开始,为了保证数据的安全性,可以通过配置,让主服务器只在由至少N个当前已连接从服务器的情况下,才执行写命令。
      不过,因为Redis使用异步复制,所以主服务器发送的写数据并不一定会被从服务器接收到,因此,数据丢失的可能性仍然时存在的。
      通过以下两个参数保证数据的安全:
      min-slaves-to-write
      min-slaves-max-lag
      解释:
      要求至少有一个slave,数据复制和同步的延迟不能超过10秒,如果一旦所有的slave,数据复制和同步的延迟都超过了十秒钟,那么这个时候,master就不会再接受任何请求了。
      减少异步复制的数据丢失:
      有了min-slaves-max-lag这个配置,就可以确保说,一旦slave复制数据和ack延时太长,就认为可能master down机后损失的数据太多了,那么就拒绝写请求,这样可以把master down机时由于部分数据未同步到slave导致的数据丢失降低的可控范围内。
      减少脑裂的数据丢失:
      如果一个master出现了脑裂,跟其他slave丢了连接,那么上面两个配置可以确保说,如果不能继续给指定数量的slave发送数据,而且slave超过10秒没有给自己ack消息,那么就直接拒绝客户端的写请求,这样脑裂后的旧master就不会接受client的新数据,也就避免了数据的丢失。
      上面的配置就确保了,如果跟任何一个slave丢了连接,在10秒后发现没有slave给自己ack,那么就拒绝清的写请求。因此在脑裂场景下,最多就丢失10秒的数据。

  • Redis-sentinel哨兵集群

    Redis HA Sentinel集群:
    Redis-Sentinel 是 Redis 官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。
    Sentinel的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移(failover)、主从切换。Redis的Sentinel最小配置是一主一从。 Redis的Sentinel系统可以用来管理多个Redis服务器,该系统可以执行以下四个任务:
    监控
    Sentinel会不断的检查主服务器和从服务器是否正常运行。
    通知
    当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。
    自动故障转移
    当主节点不能正常工作时,Sentinel会开始一次自动的故障转移操作,它会将与失效主节点是主从关系的其中一个从节点升级为新的主节点, 并且将其 他的从节点指向新的主节点。
    配置提供者
    在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息。
    Sentinel 通过向主服务器发送 INFO 命令来自动获得所有从服务器的地址。
    跟主服务器一样,Sentinel 会与每个被发现的从服务器创建命令连接和订阅连接。

  • Redis-Cluster去中心化集群

    Redis集群搭建的方式有多种,例如使用客户端分片、Twemproxy、Codis等,但从redis 3.0之后版本支持redis-cluster集群,它是Redis官方提出的解决方案:
    Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

    redis-cluster特点

    ​ 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
    ​ 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
    ​ 节点的fail是通过集群中超过半数的节点检测失效时才生效。

以上介绍参考https://blog.csdn.net/chenshuai199533/article/details/125051080


1、资源包说明

redis版本:redis-6.2.12


redis-6.2.12.tar.gz官网下载地址:

https://download.redis.io/releases/redis-6.2.12.tar.gz


若以上链接无法使用,使用以下链接进行下载

redis-6.2.12.tar.gz下载地址:

链接:https://pan.baidu.com/s/1GjbDk0XdSJyA5NBnR5B7pQ?pwd=zska
提取码:zska

二、服务部署

根据自己想要部署的集群选择对应的部署操作

1、Redis单节点部署

资源列表:

主机名IP系统版本
redis-only10.0.13.81CentOS Linux release 7.5.1804
1.1依赖环境安装

编译安装前需要安装好redis的基础依赖环境

如果你的服务器通外网可以直接通过yum的方式进行下载,直接执行以下操作

#安装依赖环境
yum install -y pcre* zlib-devel psmisc facter make kernel-devel gcc* openssl*

如果您的服务器不通外网,无法通过yum的方式进行下载,请通过以下链接下载我安装好的rpm包进行导入

链接:https://pan.baidu.com/s/1qrYdlTWkgG8WZ5hhAuo_dQ?pwd=zska
提取码:zska
首先根据以上链接下载到 redis_rpm.zip 文件并上传至服务器上

image-20230606112024879

#解压资源包
unzip redis_rpm.zip
#切换目录
cd redis_rpm
#导入rpm包
rpm -Uvh ./*.rpm --nodeps
image-20230606112423824
1.2安装Redis

提前根据<部署说明>内的<资源部说明>下载redis-6.2.12.tar.gz并上传至服务器

image-20230606112816893
#创建安装目录,选择磁盘空间充足的分区挂载目录进行创建
mkdir /data
#解压安装包
tar -zxvf redis-6.2.12.tar.gz -C /data
#改名,方便后续操作,可跳过
cd /data && mv redis-6.2.12/ redis
#编译
cd /data/redis && make
image-20230606113253864
#创建指定目录
mkdir /data/redis_log
#备份配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,以下内容部分目录根据实际配置,且配置内RDB与AOF持久化都关闭了,其中'behome'是我定义的密码,可以自行修改
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
EOF
image-20230606114528678
1.3启动服务
#编辑启动变量配置文件
cat > /data/redis/redis.config << EOF
installMode=central
nicName=ens192    #实际的网卡名称
currIP=10.0.13.81   #与其对应的IP地址
masterName=mymaster
redisAuth=behome    #redis的密码
redisMasterIPAddr=10.0.13.81    #与其对应的IP地址
redisSlaveIPAddres="null"
EOF
image-20230606114618856
#编辑启动redis服务文件,其中定义的目录根据实际修改
cat > /etc/init.d/redis << EOF
#!/bin/sh
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6380
EXEC=/data/redis/src/redis-server
CLIEXEC=/data/redis/src/redis-cli

PIDFILE=/data/redis_log/redis_\${REDISPORT}.pid
CONF="/data/redis/redis.conf"
LOGFILE=/data/redis_log/redis_\${REDISPORT}.log

. /data/redis/redis.config
case "\$1" in
    start)
        if [ -f \$PIDFILE ]
        then
                echo "\$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                \$EXEC \$CONF
        fi
        ;;
    stop)
        if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                PID=\$(cat \$PIDFILE)
                echo "Stopping ..."
                \$CLIEXEC -a "\$redisAuth" -p \$REDISPORT shutdown
                while [ -x /proc/\${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
        status)
                if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                                PID=\$(cat \$PIDFILE)
                                echo "Redis is running. PID is \$PID"
                fi
                ;;
    restart)
                \$0 stop
                sleep 3
                \$0 start
                ;;
    *)
        echo "Usage: \$0 {start|stop|status|restart}"
        ;;
esac
EOF
image-20230606115125301
#给予文件权限
chmod 775 /etc/init.d/redis /data/redis/redis.config
#启动并设置开机自启
chkconfig --add redis
chkconfig redis on
chkconfig --level 23456 redis on
#创建软链
ln -s /data/redis/src/redis-cli /usr/bin/
ln -s /data/redis/src/redis-server /usr/bin/
#重启服务器验证
reboot
#查看重启后服务状态,并进行测试
ps -ef | grep redis
systemctl status redis
image-20230606131450535
#创建、查询、删除key测试
redis-cli -p 6380
#登录,密码为配置文件内配置的密码
auth behome
#创建key
set name zs
#查询key
keys *
#获取key值
get name
#删除key
del name

image-20230606131641545

如上图,代表redis部署完成

2、Redis主从部署

资源列表

主机名IP系统版本集群角色
redis-110.0.13.72CentOS Linux release 7.5.1804master
redis-210.0.13.73CentOS Linux release 7.5.1804slave-1
redis-310.0.13.75CentOS Linux release 7.5.1804slave-2
2.1依赖环境安装

所有节点安装依赖环境

编译安装前需要安装好redis的基础依赖环境

如果你的服务器通外网可以直接通过yum的方式进行下载,直接执行以下操作

#安装依赖环境
yum install -y pcre* zlib-devel psmisc facter make kernel-devel gcc* openssl*

如果您的服务器不通外网,无法通过yum的方式进行下载,请通过以下链接下载我安装好的rpm包进行导入

链接:https://pan.baidu.com/s/1qrYdlTWkgG8WZ5hhAuo_dQ?pwd=zska
提取码:zska
首先根据以上链接下载到 redis_rpm.zip 文件并上传至服务器上

image-20230606112024879

#解压资源包
unzip redis_rpm.zip
#切换目录
cd redis_rpm
#导入rpm包
rpm -Uvh ./*.rpm --nodeps
image-20230606112423824
2.2安装redis

提前根据<部署说明>内的<资源部说明>下载redis-6.2.12.tar.gz并上传至所有服务器上

image-20230606132722699

以下操作三台redis节点依次操作

#创建安装目录,选择磁盘空间充足的分区挂载目录进行创建
mkdir /data
#解压安装包
tar -zxvf redis-6.2.12.tar.gz -C /data
#改名,方便后续操作,可跳过
cd /data && mv redis-6.2.12/ redis
#创建指定目录
mkdir /data/redis_log
#编译
cd /data/redis && make
image-20230606133407384
2.3编辑配置

redis-master节点操作

#备份原配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,注意'behome'是我定义的密码,可以自行修改。部分数据目录及日志目录根据自己的实际路径进行修改。
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
EOF

redis-slave-1节点操作

#备份原配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,注意'behome'是我定义的密码,可以自行修改。部分数据目录及日志目录根据自己的实际路径进行修改。
#其中slaveof 10.0.13.72 6380代表主节点redis的IP和端口,修改为自己的
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
slaveof 10.0.13.72 6380
EOF

redis-slave-2节点操作

#备份原配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,注意'behome'是我定义的密码,可以自行修改。部分数据目录及日志目录根据自己的实际路径进行修改。
#其中slaveof 10.0.13.72 6380代表主节点redis的IP和端口,修改为自己的
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
slaveof 10.0.13.72 6380
EOF
2.4启动并验证服务

以下操作所有节点依次执行

#定义变量,主要是定义网卡名称与IP地址,定义完后echo看下是否正确
a=`ip addr | grep -w 2 | awk '{print $2}' | awk -F':' '{print $1}'`
echo $a
b=`ip addr | grep -w inet | awk 'NR==2 {print $2}' | awk -F'/' '{print $1}'`
echo $b
#编辑启动变量配置文件,注意按照注释填写以及密码要修改为自己设置的
cat > /data/redis/redis.config << EOF
installMode=central
nicName=$a    #实际的网卡名称
currIP=$b   #与其对应的IP地址
masterName=mymaster
redisAuth=behome    #redis的密码
redisMasterIPAddr=$b   #与其对应的IP地址
redisSlaveIPAddres="null"
EOF
image-20230606140448339
#编辑启动redis服务文件,其中定义的目录根据实际修改
cat > /etc/init.d/redis << EOF
#!/bin/sh
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6380
EXEC=/data/redis/src/redis-server
CLIEXEC=/data/redis/src/redis-cli

PIDFILE=/data/redis_log/redis_\${REDISPORT}.pid
CONF="/data/redis/redis.conf"
LOGFILE=/data/redis_log/redis_\${REDISPORT}.log

. /data/redis/redis.config
case "\$1" in
    start)
        if [ -f \$PIDFILE ]
        then
                echo "\$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                \$EXEC \$CONF
        fi
        ;;
    stop)
        if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                PID=\$(cat \$PIDFILE)
                echo "Stopping ..."
                \$CLIEXEC -a "\$redisAuth" -p \$REDISPORT shutdown
                while [ -x /proc/\${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
        status)
                if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                                PID=\$(cat \$PIDFILE)
                                echo "Redis is running. PID is \$PID"
                fi
                ;;
    restart)
                \$0 stop
                sleep 3
                \$0 start
                ;;
    *)
        echo "Usage: \$0 {start|stop|status|restart}"
        ;;
esac
EOF
image-20230606140614207
#给予文件权限
chmod 775 /etc/init.d/redis /data/redis/redis.config
#启动并设置开机自启
chkconfig --add redis
chkconfig redis on
chkconfig --level 23456 redis on
#创建软链
ln -s /data/redis/src/redis-cli /usr/bin/
ln -s /data/redis/src/redis-server /usr/bin/
#重启服务器验证
reboot
#查看重启后服务状态,并进行测试
ps -ef | grep redis
systemctl status redis
image-20230606140849579

以下操作来到redis-master节点进行key的创建

#登录redis
redis -p 6380
#输入密码登录
auth behome
#使用info查看replication中的role以及连接中的slave数量connected_slaves值
info
image-20230606141146140
#设置key值
set name zs
#获取key值
get name

image-20230606141256527


以下操作来到两台redis-slave节点执行

#登录redis
redis-cli -p 6380
#输入密码登录
auth behome
#获取key值
get name

image-20230606141424093

以上测试无问题后,回到master节点将测试key删除掉(del name)

redis主从复制部署完成


3、Redis哨兵集群部署

资源列表

主机名IP系统版本集群角色
redis-110.0.13.72CentOS Linux release 7.5.1804master
redis-210.0.13.73CentOS Linux release 7.5.1804slave-1
redis-310.0.13.75CentOS Linux release 7.5.1804slave-2
3.1依赖环境安装

所有节点安装依赖环境

编译安装前需要安装好redis的基础依赖环境

如果你的服务器通外网可以直接通过yum的方式进行下载,直接执行以下操作

#安装依赖环境
yum install -y pcre* zlib-devel psmisc facter make kernel-devel gcc* openssl*

如果您的服务器不通外网,无法通过yum的方式进行下载,请通过以下链接下载我安装好的rpm包进行导入

链接:https://pan.baidu.com/s/1qrYdlTWkgG8WZ5hhAuo_dQ?pwd=zska
提取码:zska
首先根据以上链接下载到 redis_rpm.zip 文件并上传至服务器上

image-20230606112024879

#解压资源包
unzip redis_rpm.zip
#切换目录
cd redis_rpm
#导入rpm包
rpm -Uvh ./*.rpm --nodeps
image-20230606112423824
3.2安装redis

提前根据<部署说明>内的<资源部说明>下载redis-6.2.12.tar.gz并上传至所有服务器上

image-20230606132722699

以下操作三台redis节点依次操作

#创建安装目录,选择磁盘空间充足的分区挂载目录进行创建
mkdir /data
#解压安装包
tar -zxvf redis-6.2.12.tar.gz -C /data
#改名,方便后续操作,可跳过
cd /data && mv redis-6.2.12/ redis
#创建指定目录
mkdir /data/redis_log
mkdir /data/redis/sentinel
#编译
cd /data/redis && make
image-20230606133407384
3.3编辑配置

redis-master节点操作

#备份原配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,注意'behome'是我定义的密码,可以自行修改。部分数据目录及日志目录根据自己的实际路径进行修改。
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
EOF
image-20230606142902131
#备份sentinel的配置文件
mv /data/redis/sentinel.conf /data/redis/sentinel.conf_bak
#编辑sentinel配置文件,注意behome为redis的密码。mymaster后指定的是redis-master的IP和端口。
cat > /data/redis/sentinel.conf << EOF
bind 0.0.0.0
daemonize yes
protected-mode yes
port 26380
pidfile "/data/redis_log/redis_26380.pid"
logfile "/data/redis_log/redis_26380.log"
dir "/data/redis/sentinel"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.0.13.72 6380 2
sentinel auth-pass mymaster behome
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
EOF

image-20230606145421667

redis-slave-1节点操作

#备份原配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,注意'behome'是我定义的密码,可以自行修改。部分数据目录及日志目录根据自己的实际路径进行修改。
#其中slaveof 10.0.13.72 6380代表主节点redis的IP和端口,修改为自己的
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
slaveof 10.0.13.72 6380
EOF
image-20230606142928498
#备份sentinel的配置文件
mv /data/redis/sentinel.conf /data/redis/sentinel.conf_bak
#编辑sentinel配置文件,注意behome为redis的密码。mymaster后指定的是redis-master的IP和端口。
cat > /data/redis/sentinel.conf << EOF
bind 0.0.0.0
daemonize yes
protected-mode yes
port 26380
pidfile "/data/redis_log/redis_26380.pid"
logfile "/data/redis_log/redis_26380.log"
dir "/data/redis/sentinel"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.0.13.72 6380 2
sentinel auth-pass mymaster behome
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
EOF

image-20230606145421667

redis-slave-2节点操作

#备份原配置文件
mv /data/redis/redis.conf /data/redis/redis.conf_bak
#编辑配置文件,注意'behome'是我定义的密码,可以自行修改。部分数据目录及日志目录根据自己的实际路径进行修改。
#其中slaveof 10.0.13.72 6380代表主节点redis的IP和端口,修改为自己的
cat > /data/redis/redis.conf << EOF
bind 0.0.0.0
protected-mode yes
port 6380
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /data/redis_log/redis_6380.pid
loglevel notice
logfile "/data/redis_log/redis_6380.log"
databases 16
always-show-logo yes
#save 900 1
#save 300 10
#save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /data/redis
masterauth behome
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass behome
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
slaveof 10.0.13.72 6380
EOF
image-20230606142948336
#备份sentinel的配置文件
mv /data/redis/sentinel.conf /data/redis/sentinel.conf_bak
#编辑sentinel配置文件,注意behome为redis的密码。mymaster后指定的是redis-master的IP和端口。
cat > /data/redis/sentinel.conf << EOF
bind 0.0.0.0
daemonize yes
protected-mode yes
port 26380
pidfile "/data/redis_log/redis_26380.pid"
logfile "/data/redis_log/redis_26380.log"
dir "/data/redis/sentinel"
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.0.13.72 6380 2
sentinel auth-pass mymaster behome
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
EOF

image-20230606145421667

2.4启动并验证服务

以下操作所有节点依次执行

#定义变量,主要是定义网卡名称与IP地址,定义完后echo看下是否正确
a=`ip addr | grep -w 2 | awk '{print $2}' | awk -F':' '{print $1}'`
echo $a
b=`ip addr | grep -w inet | awk 'NR==2 {print $2}' | awk -F'/' '{print $1}'`
echo $b
#编辑启动变量配置文件,注意按照注释填写以及密码要修改为自己设置的
cat > /data/redis/redis.config << EOF
installMode=central
nicName=$a    #实际的网卡名称
currIP=$b   #与其对应的IP地址
masterName=mymaster
redisAuth=behome    #redis的密码
redisMasterIPAddr=$b   #与其对应的IP地址
redisSlaveIPAddres="null"
EOF
image-20230606140448339
#编辑启动redis服务文件,其中定义的目录根据实际修改
cat > /etc/init.d/redis << EOF
#!/bin/sh
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6380
EXEC=/data/redis/src/redis-server
CLIEXEC=/data/redis/src/redis-cli

PIDFILE=/data/redis_log/redis_\${REDISPORT}.pid
CONF="/data/redis/redis.conf"
LOGFILE=/data/redis_log/redis_\${REDISPORT}.log

. /data/redis/redis.config
case "\$1" in
    start)
        if [ -f \$PIDFILE ]
        then
                echo "\$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                \$EXEC \$CONF
        fi
        ;;
    stop)
        if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                PID=\$(cat \$PIDFILE)
                echo "Stopping ..."
                \$CLIEXEC -a "\$redisAuth" -p \$REDISPORT shutdown
                while [ -x /proc/\${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
        status)
                if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                                PID=\$(cat \$PIDFILE)
                                echo "Redis is running. PID is \$PID"
                fi
                ;;
    restart)
                \$0 stop
                sleep 3
                \$0 start
                ;;
    *)
        echo "Usage: \$0 {start|stop|status|restart}"
        ;;
esac
EOF
image-20230606140614207
#编辑启动redis-sentinel服务文件,其中定义的目录根据实际修改
cat > /etc/init.d/redis-sentinel << EOF
#!/bin/sh
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=26380
EXEC=/data/redis/src/redis-server
CLIEXEC=/data/redis/src/redis-cli

PIDFILE=/data/redis_log/redis_\${REDISPORT}.pid
CONF="/data/redis/sentinel.conf"
LOGFILE=/data/redis_log/redis_\${REDISPORT}.log

. /data/redis/redis.config
case "\$1" in
    start)
        if [ -f \$PIDFILE ]
        then
                echo "\$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis sentinel..."
                 \$EXEC \$CONF --sentinel
                                echo -n \$! > \$PIDFILE
        fi
        ;;
    stop)
        if [ ! -f \$PIDFILE ]
        then
                echo "\$PIDFILE does not exist, process is not running"
        else
                PID=\$(cat \$PIDFILE)
                echo "Stopping ..."
                \$CLIEXEC -a "\$redisAuth" -p \$REDISPORT shutdown
                while [ -x /proc/\${PID} ]
                do
                    echo "Waiting for Redis sentinel to shutdown ..."
                    sleep 1
                done
                                rm -f \$PIDFILE
                echo "Redis sentinel stopped"
        fi
        ;;
    status)
                if [ ! -f \$PIDFILE ]
        then
                echo "\PIDFILE does not exist, process is not running"
        else
                                PID=\$(cat \$PIDFILE)
                                echo "Redis sentinel is running. PID is \$PID"
                fi
                ;;
        restart)
                \$0 stop
                sleep 3
                \$0 start
                ;;
        *)
        echo "Usage: \$0 {start|stop|status|restart}"
        ;;
esac
EOF
image-20230606145308410
#给予文件权限
chmod 775 /etc/init.d/redis /etc/init.d/redis-sentinel /data/redis/redis.config
#启动并设置开机自启
chkconfig --add redis
chkconfig --add redis-sentinel
chkconfig redis on
chkconfig redis-sentinel on
chkconfig --level 23456 redis on
chkconfig --level 23456 redis-sentinel on
#创建软链
ln -s /data/redis/src/redis-cli /usr/bin/
ln -s /data/redis/src/redis-server /usr/bin/
#重启服务器验证
reboot
#查看重启后服务状态,并进行测试
ps -ef | grep redis
systemctl status redis
systemctl status redis-sentinel
image-20230606145237254

以下操作来到redis-master节点进行key的创建

#登录redis
redis -p 6380
#输入密码登录
auth behome
#使用info查看replication中的role以及连接中的slave数量connected_slaves值
info
image-20230606145806673
#设置key值
set name zs
#获取key值
get name

image-20230606141256527


以下操作来到两台redis-slave节点执行

#登录redis
redis-cli -p 6380
#输入密码登录
auth behome
#获取key值
get name

image-20230606141424093


回到主节点查看sentinel启动状态

#登录redis
redis-cli -p 26380
#输入密码登录
auth behome
#查看sentinel状态
info sentinel

image-20230606150037364

如上图集群名称为我们配置文件内定义的mymaster,状态ok,masterIP端口都正确,显示两个slave,三个哨兵,与我们部署的一致

致此redis-哨兵集群部署完毕


4、Redis-cluster集群部署

资源列表

主机名IP系统版本集群角色
redis-110.0.13.72CentOS Linux release 7.5.1804node-1;node-2
redis-210.0.13.73CentOS Linux release 7.5.1804node-3;node-4
redis-310.0.13.75CentOS Linux release 7.5.1804node-5;node-6
4.1依赖环境安装

所有节点安装依赖环境

编译安装前需要安装好redis的基础依赖环境

如果你的服务器通外网可以直接通过yum的方式进行下载,直接执行以下操作

#安装依赖环境
yum install -y pcre* zlib-devel psmisc facter make kernel-devel gcc* openssl*

如果您的服务器不通外网,无法通过yum的方式进行下载,请通过以下链接下载我安装好的rpm包进行导入

链接:https://pan.baidu.com/s/1qrYdlTWkgG8WZ5hhAuo_dQ?pwd=zska
提取码:zska
首先根据以上链接下载到 redis_rpm.zip 文件并上传至服务器上

image-20230606112024879

#解压资源包
unzip redis_rpm.zip
#切换目录
cd redis_rpm
#导入rpm包
rpm -Uvh ./*.rpm --nodeps
image-20230606112423824
4.2安装redis

提前根据<部署说明>内的<资源部说明>下载redis-6.2.12.tar.gz并上传至所有服务器上

image-20230606132722699

以下操作三台redis节点依次操作

#创建安装目录,选择磁盘空间充足的分区挂载目录进行创建
mkdir /data
#解压安装包
tar -zxvf redis-6.2.12.tar.gz -C /data
#改名,方便后续操作,可跳过
cd /data && mv redis-6.2.12/ redis
#创建指定目录
mkdir /data/redis_log
mkdir /data/cluster
#创建命令软链
ln -s /data/redis/src/redis-server /usr/bin
ln -s /data/redis/src/redis-cli /usr/bin
#编译
cd /data/redis && make
image-20230606133407384
4.3编辑配置

Redis-1节点操作

#创建指定目录
mkdir /data/cluster/{7000,7001}
#编辑7000的配置文件
cat > /data/cluster/7000/redis.conf << EOF
bind 0.0.0.0
port 7000   
daemonize yes 
pidfile /data/redis_log/redis_7000.pid
logfile /data/redis_log/redis_7000.log
dir /data/redis
appendonly yes 
appendfilename "appendonly.aof"  
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes-7000.conf 
cluster-node-timeout 5000 
cluster-replica-validity-factor 10 
cluster-migration-barrier 1
cluster-require-full-coverage yes 
EOF
#编辑7001的配置文件
cat > /data/cluster/7001/redis.conf << EOF
bind 0.0.0.0
port 7001   
daemonize yes 
pidfile /data/redis_log/redis_7001.pid
logfile /data/redis_log/redis_7001.log
dir /data/redis
appendonly yes 
appendfilename "appendonly.aof"  
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes-7001.conf 
cluster-node-timeout 5000 
cluster-replica-validity-factor 10 
cluster-migration-barrier 1
cluster-require-full-coverage yes 
EOF
image-20230606170417165

Redis-2节点操作

#创建指定目录
mkdir /data/cluster/{7002,7003}
#编辑7002的配置文件
cat > /data/cluster/7002/redis.conf << EOF
bind 0.0.0.0
port 7002   
daemonize yes 
pidfile /data/redis_log/redis_7002.pid
logfile /data/redis_log/redis_7002.log
dir /data/redis
appendonly yes 
appendfilename "appendonly.aof"  
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes-7002.conf 
cluster-node-timeout 5000 
cluster-replica-validity-factor 10 
cluster-migration-barrier 1
cluster-require-full-coverage yes 
EOF
#编辑7003的配置文件
cat > /data/cluster/7003/redis.conf << EOF
bind 0.0.0.0
port 7003   
daemonize yes 
pidfile /data/redis_log/redis_7003.pid
logfile /data/redis_log/redis_7003.log
dir /data/redis
appendonly yes 
appendfilename "appendonly.aof"  
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes-7003.conf 
cluster-node-timeout 5000 
cluster-replica-validity-factor 10 
cluster-migration-barrier 1
cluster-require-full-coverage yes 
EOF
image-20230606170903601

Redis-3节点操作

#创建指定目录
mkdir /data/cluster/{7004,7005}
#编辑7004的配置文件
cat > /data/cluster/7004/redis.conf << EOF
bind 0.0.0.0
port 7004   
daemonize yes 
pidfile /data/redis_log/redis_7004.pid
logfile /data/redis_log/redis_7004.log
dir /data/redis
appendonly yes 
appendfilename "appendonly.aof"  
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes-7004.conf 
cluster-node-timeout 5000 
cluster-replica-validity-factor 10 
cluster-migration-barrier 1
cluster-require-full-coverage yes 
EOF
#编辑7005的配置文件
cat > /data/cluster/7005/redis.conf << EOF
bind 0.0.0.0
port 7005   
daemonize yes 
pidfile /data/redis_log/redis_7005.pid
logfile /data/redis_log/redis_7005.log
dir /data/redis
appendonly yes 
appendfilename "appendonly.aof"  
appendfsync everysec 
cluster-enabled yes 
cluster-config-file nodes-7005.conf 
cluster-node-timeout 5000 
cluster-replica-validity-factor 10 
cluster-migration-barrier 1
cluster-require-full-coverage yes 
EOF
image-20230606171226655
4.4启动服务

Redis-1节点操作

#切换工作目录
cd /data/redis/src
#启动7000
./redis-server /data/cluster/7000/redis.conf
#启动7001
./redis-server /data/cluster/7001/redis.conf
#查看启动状态
ps -ef | grep redis

image-20230606172016191

Redis-2节点操作

#切换工作目录
cd /data/redis/src
#启动7002
./redis-server /data/cluster/7002/redis.conf
#启动7003
./redis-server /data/cluster/7003/redis.conf
#查看启动状态
ps -ef | grep redis

image-20230606172307060

Redis-3节点操作

#切换工作目录
cd /data/redis/src
#启动7004
./redis-server /data/cluster/7004/redis.conf
#启动7005
./redis-server /data/cluster/7005/redis.conf
#查看启动状态
ps -ef | grep redis

image-20230606172419641

4.5创建集群并测试

任意节点操作

#创建集群,改为自己的IP和port
redis-cli --cluster create --cluster-replicas 1 10.0.13.72:7000 10.0.13.72:7001 10.0.13.73:7002 10.0.13.73:7003 10.0.13.75:7004 10.0.13.75:7005

如下图输入yes

image-20230606174308963

如下图即代表成功,系统已经自动分配了主从关系

image-20230606174347656

任意节点操作

#连接redis
redis-cli -h 10.0.13.72 -c -p 7000
#创建key
set name zs
#连接另一台redis进行key的获取
redis-cli -h 10.0.13.75 -c -p 7005
#获取key
get name

如下图能够同步数据代表集群搭建完成

image-20230606174852257
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值