Redis汇总

所谓困难、麻烦,都是定义在自己不会的基础上。哈,在前面对Redis还不是很熟的情况下,硬是搭建了个集群来尝尝鲜。哎,也正是因为此文Redis集群的出现,让我彻底蒙圈。什么单例啊、主从啊、哨兵啊、集群这些概念直接让我蒙逼。于是乎,只能一个个去探索咯。呼,深吸一口气!首先我们从单例说起吧:下载安装Redis菜鸟教程 新手最佳选择,下载完成并启动:

在这里插入图片描述

单例并没什么好说的,其实就是建立个服务端提供给客户端进行使用,仅此而已。但它存在一个很大的弊端,突然宕机了怎么办?于是乎,为了解决Redis突然宕机的困扰,也为了保证数据的不丢失,所以引入了主从,即:一台主机搭配一台从机多台从机。主机进行读写,从机只读,没有写的权限。说的直白些,其实就是为了预防Redis宕机,给主库做数据备份,它最大特点就是数据同步,即主机一旦写入数据,每台从机存储的数据都与主机保持同步和完整。

在这里插入图片描述

*将下载的Redis文件,拷贝三份。为主从模式的搭建做准备:

在这里插入图片描述在这里插入图片描述

分别打开文件607160726073的配置文件进行配置,主节点(端口任意)配置内容如下:

# 端口
port 6071

# 数据库数
databases 16

# 日志
#logfile D:/Redis/Slave/6071/Logs.txt

# 日志类型
#loglevel verbose

# 支持持久化
appendonly yes

# slave连接master密码(主从切换:密码验证,必配)
masterauth 123@456

# 密码
requirepass 123@456

# 允许远程
protected-mode no

Linux配置文件大致一样,没太大区别:只不过是文件路径目录格式不一样罢了。

# 端口
port 6380

# 运行后台运行
daemonize yes

# 支持持久化
appendonly yes

# 启动服务配置文件
pidfile /var/run/redis/redis-slave-server.pid

# 日志类型
loglevel verbose

# 日志位置
logfile /var/log/redis/redis-slave-server.log

# redis目录
dir /var/lib/redis

# 配置密码
requirepass 123@456

#主从切换时的密码验证
masterauth 123@456

# 运行远程
protected-mode no

每个从节点的配置内容均相同,唯一的区别就是:在主节点的配置内容的基础上,再增加一行代码:slaveof 192.168.157.1 6072,代表的意思是:从节点服务的主节点IP地址+端口。这里作一个简单说明,另一个从节点配置内容也完全一样,只需更换第一行启动端口不同端口即可,其余内容不变。Linux配置也一样,同样只需增加一行代码:slaveof 192.168.157.1 6072即可。

# 端口
port 6073

# 数据库数
databases 16

# 日志
#logfile D:/Redis/Slave/6073/Logs.txt

# 日志类型
#loglevel verbose

# 支持持久化
appendonly yes

# 配置从节点主节点
slaveof 192.168.157.1 6071

# slave连接master密码
masterauth 123@456

# 密码
requirepass 123@456

# 允许远程
protected-mode no

配置完成后,进入到每个配置文件的目录,编写一个脚本.bat文件来进行启动。这里注意,是每一个配置文件所在的目录都要编写,因为每个服务都要启动,才有所谓的主从。脚本内容如下:

# 启动Redis服务
redis-server redis.windows.conf

在这里插入图片描述

Linux启动就更简单了,直接使用如下命令启动对应得配置文件就好了:

# 启动每个配置文件所对应的Redis服务
 redis-server /etc/redis/redis_slave.conf

在这里插入图片描述

启动效果:

在这里插入图片描述

验证主从,首先进入Redis安装目录,通过客户端命令进行访问:

# 连接服务
redis-cli -h 192.168.157.1 -p 6071
# 验证密码
auth 123@456

在这里插入图片描述

同理,访问从节点端口,可以看到:从节点没有写的权限,却可以读取到和主节点同步的数据。

# 连接服务
redis-cli -h 192.168.157.1 -p 6072
# 验证密码
auth 123@456

在这里插入图片描述

有了主从以后,虽然保证了数据的同步和可用。但当Master节点宕机后,从节点它不具有写的权限啊。这样的话,除了做一个数据备份,好像对Redis的可用性并不是很强。所以引入了我们的Redis哨兵Sentinel就是哨兵的意思。哨兵的作用呢,就是监控Master主节点的运行状况。一旦节点宕机RedisSentinel哨兵就会进行投票选举,从已经宕机了的Master节点的从节点中,推选出一个新的Master节点,从而避免了Master宕机,就导致从节点因为不具有写的权限,而无法提供服务的缺陷。从而,把这种哨兵模式,称为:Redis高可用模式。同理,将Redis文件拷贝三份,在每一个目录下新建一个文本文件sentinel.conf,只不过这一次的不同是,我们启动的是Sentinel配置文件sentinel.conf,而不再是redis.windows.conf。同理,每一个sentinel.conf配置内容都一样,因为监控的是同一个Master节点,只不过是启动的端口不同。当然也可以把Sentinel部署在不同的机器,不过前提是必须在同一个局域网内(亲测)。因为Sentinel之间的通信是通过内网交互,而不是外网。

在这里插入图片描述

在这里插入图片描述

Sentinel.conf配置内容:这里一定要注意的是,三个目录下的配置文件内容都相同,但启动的端口一定要更换,如6071prot 26071,6072:26072,一次类推。除非你是在同一个局域网内的三台机器相同的端口,方可。


#当前Sentinel服务运行的端口
port 26071

#Sentinel去监视一个名为master-6071的主redis实例,这个主实例的IP地址为本机地址127.0.0.1,端口号为6071,
#而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
sentinel monitor master-6071 192.168.157.1 6071 2

# 验证主机密码
sentinel auth-pass master-6071 123@456

# 允许远程
protected-mode no

每个目录下编写一个脚本文件Sentinel.bat用于启动Sentinel.conf,脚本内容如下:

# 启动Sentinel
redis-server sentinel.conf --sentinel

启动后每个Sentinel

在这里插入图片描述

停掉6071这个服务,即宕机的情景。此时我们会发现,主从自动进行了切换,即Master挂掉后,当Sentinel监控到节点6071宕机后,在MasterSlave推选了出了新的Master,仍旧可以为Redis提供正常的服务。通过这种选举机制,大大提高了Redis使用效率,故称为:高可用。即不会因为当前Master的宕机,而导致整个服务无法继续 进行,而是通过新的Master来继续提供服务,直到每个节点都宕机以后,整个服务才会停止。

在这里插入图片描述

这里一定要注意啊,在mster宕机后,主从切换是需要时间的,大概要等待30秒左右吧。记得一开始我就没等待,导致我认为我的Sentinel是没有搭建成功的。若等待超过了这30或超过这个时间段Sentinel还没反应,那就得重新检查你的配置文件了。下面来看下正确的场景:

在这里插入图片描述

纵使有了Redis哨兵Senteinel的高可用,可是它仍存在着缺陷啊。当用户量过大、或是并发数过多,所有的服务器压力Master都得自己扛下来,除非宕机通过Sentinel哨兵机制扔给下一台服务器去扛。但它始终只有一台进行工作,所以为了解决这样的困境,就引入了Redis集群,以负载均衡的方式,来分担服务器压力。把一台服务器要扛得压力,通过负载均衡给集群中的每一台Matser机器。Redis集群哨兵机制的区别在于,Redis集群节点不提供任何服务,仅作节点Master的数据备份,但它是负载均衡,多个Master进行负载均衡。而哨兵是可以进行主从切换的,但它从头到尾都是一台服务器在扛。集群的详细搭建,请参照我的上一篇博文搭建Redis集群,配置文件如下:


# 支持持久化
appendonly yes

# 端口
port 6379

# 日志
logfile C:/Files/Redis/Cluster/Logs/Log.txt

# 日志类型
loglevel verbose

# 配置密码
requirepass 123@456

# 从服务器只读选项,默认是yes,只读模式  
# slave-read-only no

#  允许创建集群
cluster-enabled yes

# 节点配置文件
cluster-config-file nodes.conf

# 连接超时时间
cluster-node-timeout 15000

# 允许远程
protected-mode no

Linux配置文件:有个小细节,先创建集群后再配置密码,这样就会避免NO AUTH…的错误提示了,即没有进行密码验证授权。

# 端口
port 6379

# 运行后台运行
daemonize yes

# 支持持久化
appendonly yes

# 启动服务配置文件
pidfile /var/run/redis/redis-server.pid

# 日志类型
loglevel verbose

# 日志位置
logfile /var/log/redis/redis-server.log

# redis目录
dir /var/lib/redis

# 配置密码
requirepass 123@456

# 从服务器只读选项,默认是yes,只读模式  
slave-read-only yes

# 运行远程
protected-mode no

# 开启集群
cluster-enabled yes

总结:
主从:数据同步、作备份。保证数据的可用性!
哨兵:保障Redis服务的高可用,不至于Master挂点后,就无法再继续提供服务。主从自动切换,直到最后一个节点宕机方止!
集群:负载均衡,缓解服务器的压力。详细参见我的另一篇博文Redis集群重新学习再详解说明

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值