使用sentinel搭建redis高可用集群

一、 redis概述
1、 redis概述
Redis的出现时间并不长,是NoSQL(非关系型数据库)中的一种,基于键-值型的存储,在2009年第一次发布Redis。Redis 全称(Remote Dictionary Server)远程字典服务器,而这个字典服务器从本质上来讲,主要是提供数据结构的远程存储功能的,可以理解为Redis是一个高级的K-V存储和数据结构存储,因为Redis除了能够存储K-V这种简单的数据之外,还能够存储,列表、字典、hash表、等对应的数据结构。
Redis支持主从模式,Redis能够借助于Sentinel工具来监控主从节点,当主节点发生故障时,会自己提升另外一个从节点成为新的主节点。
Redis官网:https://redis.io/download

2、 redis支持的数据类型
支持存储的数据类型有、String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog。

3、 redis性能评估
(1)100万较小的键存储字符串,大概消耗100M内存
(2)由于Redis是单线程,如果服务器主机上有多个CPU,只有一个能够使用,但并不意味着CPU会成为瓶颈,因为Redis是一个比较简单的K-V数据存储,CPU通常不会成为瓶颈的
(3)在常见的linux服务器上,500K(50万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发

4、 redis和mamcache对比
(1)Memcache只能使用内存来缓存对象。而Redis除了可以使用内存来缓存对像,还可以周期性的将数据保存到磁盘上,对数据进行永久存储。当服务器突然断电或死机后, redis基于磁盘中的数据进行恢复。
(2)Redis是单线程服务器,只有一个线程来响应所有的请求。Memcache是多线程的
(3)Redis支持更多的数据类型

二、 安装redis
1、 安装remi repository源
Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供维护。有了这个源之后,使用 YUM 安装或更新 PHP、MySQL、phpMyAdmin 等服务器相关程序的时候就非常方便了。但与此同时,Remi源也提供了目前最新版本的Redis,可以通该源使用YUM安装目前最新版本的Redis。

2、 安装epel源
因为安装remi repository源是需要epel源
[root@xuegod120 ~]# yum -y install epel-release #使用yum安装的是官方的epel

3、 安装remi repository源
[root@xuegod120 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

4、 使用remi repository源安装redis
[root@xuegod120 ~]# yum --enablerepo=remi install -y redis #选用remi源进行安装redis

注释:/etc/yum.repos.d/remi.repo源安装完成后,默认为不开启动,在需求使用remi repository源安装程序时,需求–enablerepo=remi选项指定使用remi repository源是可以被使用的,然后进行安装。通俗讲就是不会自动选择这个源来安装软件,必须手动指定remi repository源来进行安装。

5、 查看redis版本
[root@xuegod120 ~]# redis-cli --version
redis-cli 5.0.0

6、 启动redis
[root@xuegod120 ~]# systemctl start redis
[root@xuegod120 ~]# netstat -antup | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 44959/redis-server
注:redis默认监听6379端口

三、 redis基本操作
1、 redis配置文件参数说明
Redis配置文件存放路径:/etc/redis.conf
[root@xuegod120 ~]# vim /etc/redis.conf #配置文件中主要参数如下
改:69 bind 127.0.0.1
为:69 bind 0.0.0.0 #redis监听的地址,默认监听在127.0.0.1地址上,改为0.0.0.0地址或192.168.0.120。
以下内容,保持不变,大家可以了解一下,每个配置的含意:
protected-mode yes #protected-mode参数是为了禁止外网访问redis,如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis。
port 6379 #默认监听端口:6379。
tcp-backlog 511 #指定tcp-backlog的长度。backlog是一个等待队列。当有大量请求需要redis处理时,redist有可能处理不过来,需要等待的请求队列会通过backlog来缓存。backlog的数量决定了可以缓存的队列数。
unixsocket /tmp/redis.sock #指定使用sock文件通信及sock文件位置,如果服务端和客户都在同一台主机上,建议打开此项,基于sock方式通信可以直接在内存中交换,数据不用再经过TCP/TP协议栈进行封装、拆封。
unixsocketperm 700 #定义sock文件的访问权限。
timeout 0 #表示当客户端连接成功后,空闲(非活跃、或没有任何数据交互)多长时间则连接超时,0表示不启用此功能。
tcp-keepalive 300 #定义是否启用tcp-keepalive功能。长链接功能。
daemonize no #如果需要在后台运行,把该项改为yes。如果使用redis服务脚本启动,即使daemonize为no,也会运行为一个守护进程。
supervised no #定义是upstart还是systemd接管redis进程。默认无监督互动,不需要修改。

loglevel notice #定义日志级别。
logfile /var/log/redis/redis.log #定义日志文件。
databases 16 #定义redis默认有多少个databases,但是在分布式中,只能使用一个。
#masterauth #如果连接主数据库时需要密码验证,这里指定密码。默认不启用。
#限制同时连接的客户端数量。超过数量将不再接受新的请求并返回错误信息。
#maxclients 10000 #设置同时连接redis客户端的最大数量。

2、 登录redis
[root@xuegod120 ~]# redis-cli
选项:
-h 指定主机IP
-p 指定端口socket文件进行通信。
[root@xuegod120 ~]# redis-cli -h 127.0.0.1 #连接redis,默认不启用密码认证。
127.0.0.1:6379> exit #退出连接。
或:
[root@xuegod120 ~]# redis-cli #使用redis-cli直接连接,默认连接是127.0.0.1 IP。

3、 redis字符串操作

键的命名规则遵循
1)可以使用ASCII字符
2)键的长度不要过长,键的长度越长则消耗的空间越多
3)在同一个库中(名称空间),键的名称不得重复,如果复制键的名称,实际上是修改键中的值
4)在不同的库中(名称空间),键的多种名称可以重复
5)键可以实现自动过期 set user zx ex 20 #20s后过期

例1:设置键system的值为centos
[root@xuegod120 ~]# redis-cli -h 127.0.0.1
127.0.0.1:6379> set system centos #set用于创建键值
OK
127.0.0.1:6379> get system #get 后加键,可以查看键中的值
“centos”

例2:定义一个键name值为zhangsan,并设置过期时间为60秒。
127.0.0.1:6379> set name zhangsan EX 60
OK
127.0.0.1:6379> get name
“zhangsan”

4、 开启redis认证服务
[root@xuegod120 ~]# vim /etc/redis.conf
改:507 # requirepass foobared #启用此项,并指定密码即可。
为:507 requirepass 123456 #指定密码为123456。
[root@xuegod120 ~]# systemctl reload redis #这个reload是不能执行的。
[root@xuegod120 ~]# systemctl restart redis #重启服务。
[root@xuegod120 ~]# iptables -F

测试用户认证功能:
[root@xuegod120 ~]# redis-cli
127.0.0.1:6379> get system
(error) NOAUTH Authentication required. #发现报错, 需要用户密码认证。
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> get system
“centos”

四、 配置redis持久化
1、 redis持久化
Redis工作时所有数据集都是存储于内存中的,如果Redis崩溃或断电导致所有数据丢失,所以Redis提供了持久化功能来保证数据的可靠性,Redis持久化有两种实现方法:RDB和AOF。
1)RDB: 存储为二进制格式的数据文件,是默认启动的持久化机制;按事先定制的策略,周期性地将数据保存至磁盘。
2)AOF:Append Only File类似于MySQL的二进制日志,记录每一次redis的写操作命令,以顺序IO方式附加在指定文件的尾部,是使用追加方式实现的,这也叫做一种附加日志类型的持久化机制。由于每一次的操作都记录,则会随着时间长而增大文件的容量,并且有些记录的命令是多余的。但是redis进程能够自动的去扫描这个对应的AOF文件,把其中一些冗余的操作给合并一个,以实现将来一次性把数据恢复。
总结:AOF记录操作命令,RDB是直接保存数据集的本身。

2、 配置文件中与RDB相关的参数说明
[root@xuegod120 ~]# vim /etc/redis.conf #默认参数就够用了。
235 stop-writes-on-bgsave-error yes #在进行快照备份时,一旦发生错误的话是否停止。
241 rdbcompression yes #RDB文件是否使用压缩,压缩会消耗CPU。
250 rdbchecksum yes #是否对RDB文件做校验码检测,此项定义在redis启动时加载RDB文件是否对文件检查校验码,在redis生成RDB文件是会生成校验信息,在redis再次启动或装载RDB文件时,是否检测校验信息。如果检测的情况下会消耗时间,会导致redis启动时慢,但是能够判断RDB文件是否产生错误。
253 dbfilename dump.rdb #定义RDB文件的名称。
263 dir /var/lib/redis #定义RDB文件存放的目录路径。
注意:持久化本身不能取代备份;还应该制定备份策略,对redis数据库定期进行备份。
[root@xuegod120 ~]# vim /var/lib/redis/dump.rdb #可查看到数据已经保存在磁盘上。

五、 搭建redis主从复制架构
1、 主从复制的工作过程
Redis的主从复制是自动进行的,并不需要用户的介入,slave端会自动连接master并进行数据同步。如果同步连接时slave端短暂的与master端断开了连接,那连接恢复后slave端会与master端进行一次同步。从而保证数据一致。Redis主从同步数据流程如下图:
在这里插入图片描述

2、 搭建redis主从架构
实验环境:
主机名 IP地址 作用
xuegod120.com 192.168.0.120 redis主
xuegod130.com 192.168.0.130 redis从

2.1. 配置xuegod120.com为redis主
安装redis
[root@xuegod120 ~]# yum -y install epel-release
[root@xuegod120 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@xuegod120 ~]# yum --enablerepo=remi install -y redis

修改redis配置文件
[root@xuegod120 ~]# vim /etc/redis.conf
改:69 bind 127.0.0.1
为:69 bind 0.0.0.0 #redis监听的地址,默认监听在127.0.0.1地址上,改为0.0.0.0地址或192.168.1.63。
改:507 # requirepass foobared #启用此项,并指定密码即可。
为:507 requirepass 123456 #指定密码为123456。

重启redis服务
[root@xuegod120 ~]# systemctl start redis

2.2 配置xuegod130.com为从redis
安装redis
[root@xuegod130 ~]# yum -y install epel-release
[root@xuegod130 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@xuegod130 ~]# yum --enablerepo=remi install -y redis

修改配置文件
[root@xuegod130 ~]# vim /etc/redis.conf
改: 286 # replicaof #修改此项如下。
为: 286 replicaof 192.168.0.120 6379
改:293 # masterauth
为:293 masterauth 123456 #写上redis主的密码。如果redis主没有密码,这里可不写。

重启redis服务
[root@xuegod130 ~]# systemctl start redis

从redis查看端口
[root@xuegod130 ~]# netstat -antup | grep redis
在这里插入图片描述

主redis查看端口
在这里插入图片描述

3、 在从redis上查看主从复制状态
[root@xuegod130 ~]# redis-cli
127.0.0.1:6379> info replication
#Replication
role:slave #角色是slave
master_host:192.168.0.120 #主reids的IP
master_port:6379 #端口
master_link_status:up #状态是up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:154
slave_priority:100
slave_read_only:1 #成为从服务器后,1表示该服务器只读
connected_slaves:0
master_replid:085bd378d0aa22a1e21bf01fba5a8dfd19caa3dc

4、 在主redis上查看主从复制状态
[root@xuegod120 ~]# redis-cli
127.0.0.1:6379> info replication
NOAUTH Authentication required. #提示需要认证
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> info replication
#Replication
role:master #角色是master
connected_slaves:1 #连接的从服务器是1个
slave0:ip=192.168.0.130,port=6379,state=online,offset=308,lag=1 #从服务器的信息
。。。。。。。。。。。。

5、 在xuegod130上验证主从复制
现在xuegod120主上创建一个键值
127.0.0.1:6379> set user zx
OK
127.0.0.1:6379> get user
“zx”

在从服务器xuegod130上查看
127.0.0.1:6379> get user
“zx”

6、 主从复制的高级配置参数
[root@xuegod120 ~]# vim /etc/redis.conf #保持默认参数就可以,不需要修改
####SNAPSHOTTING #### #定义快照存储的策略,定义存到硬盘的持久化策略。
save #使用save指令,并指定每隔多少秒,如果发生多大变化,进行存储。
save 900 1 #表示在900秒(15分钟内),如果至少有1个键发生改变,则做一次快照(持久化)
save 300 10 #表示在300秒(5分钟内),如果至少有10个键发生改变,则做一次快照(持久化)
save 60 10000 #表示在60秒(1分钟内),如果至少有10000个键发生改变,则做一次快照(持久化)。
307 replica-serve-stale-data yes #当slave端在主从复制的过程中与master端断开了连接,此时有2种处理方法:一种是继续提供服务即使数据可能不是最新的,另一种是对请求返回一个错误信息,默认配置是继续提供服务。replica [ˈreplɪkə] 复制品 ; stale [steɪl] 不新鲜的

323 replica-read-only yes #redis从只读。自redis 2.6版本开始,slave端默认为readonly

354 repl-diskless-sync no #默认不使用diskless同步方式 。
扩展:主从同步支持两种策略,即disk和socket方式(socket方式尚不完善,还处于实验阶段)。
新的slave端和重连的salve端不允许去继续同步进程,这被称之为“完全同步”。
一个RDB文件从master端传到slave端,分为两种情况:
1、支持disk:master端将RDB file写到disk,稍后再传送到slave端;
2、无磁盘diskless:master端直接将RDB file传到slave socket,不需要与disk磁盘进行交互。
无磁盘diskless方式适合磁盘读写速度慢但网络带宽非常高的环境。

366 repl-diskless-sync-delay 5 #无磁盘diskless方式在进行数据传递之前会有一个时间的延迟,以便slave端能够进行到待传送的目标队列中,这个时间默认是5秒 。
372 # repl-ping-replica-period 10 #slave端向server端发送pings的时间区间设置,默认为10秒
384 # repl-timeout 60 #设置超时时间
399 repl-disable-tcp-nodelay no #是否启用TCP_NODELAY,如果启用则会使用少量的TCP包和带宽去进行数据传输到slave端,当然速度会比较慢;如果不启用则传输速度比较快,但是会占用比较多的带宽。
412 # repl-backlog-size 1mb #设置backlog的大小,backlog是一个缓冲区,在slave端失连时存放要同步到slave的数据,因此当一个slave要重连时,经常是不需要完全同步的,执行局部同步就足够了。backlog设置的越大,slave可以失连的时间就越长。

425 # repl-backlog-ttl 3600 #如果一段时间后没有slave连接到master,则backlog size的内存将会被释放。如果值为0则表示永远不释放这部份内存。 默认是3600秒
440 replica-priority 100 #slave端的优先级设置,值是一个整数,数字越小表示优先级越高。当master故障时将会按照优先级来选择slave端进行恢复,如果值设置为0,则表示该slave永远不会被选择。
456 # min-replicas-to-write 3
457 # min-replicas-max-lag 10 #这两行的意思是,设置当一个master端的可用slave少于N个,延迟时间大于M秒时,不接收写操作。当master可用的从服务器少于3个或网络延迟时间大于10秒时,master将拒绝接收用户的写请求

六、 使用sentinel实现redis高可用部署
1、 sentinel概述和工作过程
sentinel作用:
检测Master状态,如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave 。当Master-Slave切换后,master-redis.conf、slave-redis.conf和sentinel.conf的内容都会发生改变,即master-redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

sentinel的工作过程:
Sentinel是Redis官方提供的一种高可用方案(除了Sentinel,Redis Cluster是另一种方案),它可以自动监控Redis master/slave的运行状态,如果发现master无法访问了,就会启动failover把其中一台可以访问的slave切换为master。
支持Sentinel的Redis客户端(例如Java的Jedis)会在连接Redis服务器的时候向Sentinel询问master的ip,并且会在收到master切换的pub/sub事件后自动重新连接到新的master。对调用Redis客户端的业务系统来说,这些都是完全透明的。
下图是redis sentinel的部署和运行机制 :
在这里插入图片描述
下图是master宕机后,failover的发起流程:
在这里插入图片描述
扩展:
主观下线:Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个redis服务器做出的下线判断。 Subjectively [səb’dʒektɪvlɪ] 主观地
客观下线:Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对Master Server做出 SDOWN 判断,并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的Master Server下线判断,然后开启failover。 Objectively [əb’dʒektɪvlɪ] 客观地

2、 使用sentinel实现redis高可用集群
2.1 实验环境:
主机名 IP地址 作用
xuegod120.com 192.168.0.120 主redis
xuegod130.com 192.168.0.130 从reids
xuegod140.com 192.168.0.140 从redis

2.2 配置xuegod120为主redis
[root@xuegod120 ~]# yum -y install epel-release
[root@xuegod120 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@xuegod120 ~]# yum --enablerepo=remi install -y redis

2.3 配置xuegod130为从redis
[root@xuegod130 ~]# yum -y install epel-release
[root@xuegod130 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@xuegod130 ~]# yum --enablerepo=remi install -y redis

2.4 配置xuegod140为从redis
[root@xuegod140 ~]# yum -y install epel-release
[root@xuegod140 ~]# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@xuegod140 ~]# yum --enablerepo=remi install -y redis

2.5 修改主redis的配置文件
[root@xuegod120 ~]# vim /etc/redis.conf
改:69 bind 127.0.0.1
为:69 bind 0.0.0.0 #redis监听的地址,改为0.0.0.0表示在所有网卡接口上进行监听。
改:88 protected-mode yes
为:88 protected-mode no #关闭protected-mode,允许外网访问redis服务器。
[root@xuegod120 ~]# systemctl restart redis #重启服务。
[root@xuegod120 ~]# iptables -F

2.6 配置从redis(xuegod130)
[root@xuegod130 ~]# vim /etc/redis.conf #修改第286行。
改:69 bind 127.0.0.1
为:69 bind 0.0.0.0 #redis监听的地址,改为0.0.0.0表示在所有网卡接口上进行监听。
改:88 protected-mode yes
为:88 protected-mode no
改:286 # replicaof
为:286 replicaof 192.168.0.120 6379
[root@xuegod130 ~]# systemctl start redis #启动redis。
[root@xuegod130 ~]# iptables -F

2.7 配置从redis(xuegod140)
[root@xuegod140 ~]# vim /etc/redis.conf #修改第286行。
改:69 bind 127.0.0.1
为:69 bind 0.0.0.0 #redis监听的地址,改为0.0.0.0表示在所有网卡接口上进行监听。
改:88 protected-mode yes
为:88 protected-mode no
改:286 # replicaof
为:286 replicaof 192.168.0.120 6379
[root@xuegod140 ~]# systemctl start redis #启动redis。
[root@xuegod140 ~]# iptables -F

2.8 在主redis上查看主从复制的状态
[root@xuegod120 ~]# redis-cli
127.0.0.1:6379> info replication
#Replication
role:master #角色是master
connected_slaves:2 #两台链接的从
slave0:ip=192.168.0.130,port=6379,state=online,offset=336,lag=1 #从服务器的信息
slave1:ip=192.168.0.140,port=6379,state=online,offset=336,lag=1 #从服务器的信息

2.9 在主redis上查看端口
[root@xuegod120 ~]# !net
netstat -antup | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 4739/redis-server 0
tcp 0 0 192.168.0.120:6379 192.168.0.140:41784 ESTABLISHED 4739/redis-server 0
tcp 0 0 192.168.0.120:6379 192.168.0.130:36189 ESTABLISHED 4739/redis-server 0

2.10 配置sentinel-1(xuegod120主redis)
[root@xuegod120 ~]# vim /etc/redis-sentinel.conf
改:17 # protected-mode no
为:17 protected-mode no
21 port 26379 #默认,保持不变
改:26 daemonize no
为:26 daemonize yes
改:84 sentinel monitor mymaster 127.0.0.1 6379 2
为:84 sentinel monitor mymaster 192.168.1.63 6379 2
注:# sentinel monitor 每项含意如下:
为集群名称,可以自定义,如果同时监控有多组redis集群时,不能一样。
主节点的IP地址,主节点的端口号。
主节点对应的quorum法定数量,用于定义Sentinel的数量,是一个大于值尽量使用奇数,如果Sentinel有3个,则指定为2即可,如果有4个,不能够指定为2,避免导致集群分裂。最后的数字2指定的值,表明如果有2个sentinels无法连接master,才认为master挂了。
quorum [ˈkwɔ:rəm] 法定人数
改:113 sentinel down-after-milliseconds mymaster 30000 #默认单位是毫秒,配成10秒
为:113 sentinel down-after-milliseconds mymaster 10000
121 sentinel parallel-syncs mymaster 1 #保存默认
parallel [ˈpærəlel] 平行
改:146 sentinel failover-timeout mymaster 180000
为:146 sentinel failover-timeout mymaster 60000

2.11 把修改的sentinel文件传递给两个从redis
[root@xuegod120 ~]# scp /etc/redis-sentinel.conf 192.168.0.130:/etc/redis-sentinel.conf
[root@xuegod120 ~]# scp /etc/redis-sentinel.conf 192.168.0.140:/etc/redis-sentinel.conf

2.12 重启redis和sentinel服务
[root@xuegod120 ~]# systemctl restart redis && systemctl restart redis-sentinel
[root@xuegod130 ~]# systemctl restart redis && systemctl restart redis-sentinel
[root@xuegod140 ~]# systemctl restart redis && systemctl restart redis-sentinel

以上redis高可用配置完成

3、 模拟故障
3.1 查看当前主从状态
[root@xuegod120 ~]# redis-cli
127.0.0.1:6379> info replication
#Replication
role:master #当前主redis是xuegod120
connected_slaves:2
slave0:ip=192.168.0.140,port=6379,state=online,offset=11133,lag=1
slave1:ip=192.168.0.130,port=6379,state=online,offset=11274,lag=1

3.2 模拟故障,关闭主redis的服务
[root@xuegod120 ~]# systemctl stop redis

3.3 再次登录查看
[root@xuegod120 ~]# redis-cli -h 192.168.0.130
192.168.0.130:6379> info replication

Replication

role:master #xuegod120故障后,从redis自动切换成主redis(xuegod130)
connected_slaves:1
slave0:ip=192.168.0.140,port=6379,state=online,offset=17994,lag=0

3.4 将原主redis服务启动,查看是否会恢复为主redis
[root@xuegod120 ~]# systemctl start redis
[root@xuegod120 ~]# redis-cli -h 192.168.0.130
192.168.0.130:6379> info replication

Replication

role:master #主redis还是xuegod130,并没有切换到原redis上
connected_slaves:2
slave0:ip=192.168.0.140,port=6379,state=online,offset=49204,lag=1
slave1:ip=192.168.0.120,port=6379,state=online,offset=0,lag=1

4、 查看sentine信息
[root@xuegod120 ~]# redis-cli -h 192.168.0.130 -p 26379
192.168.0.130:26379> info sentinel

Sentinel

sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.130:6379,slaves=2,sentinels=2

注意:将来客户端应连接Sentinel,向Sentinel发请求去寻址,并根据Sentinel的反馈,进行连接新的Redis主节点,这一点需要使用Redis专用客户端来实现。Redis客户端会根据Sentinel返回的新节点IP进行连接。这一块是开发人员的事情了。如果java中的JedisClient就提供了使用Sentinel的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值