Redis-哨兵模式_常见问题

一 哨兵模式

1.1 Redis哨兵-介绍:

Redis主从复制的作用有数据热备、负载均衡、故障恢复等:但主从复制存在的一个问题是故障恢复无法自动化。接下来要介绍的哨兵模式,它基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题,进一步提高系统的高可用性。 Redis的Sentinel系统用于管理多个Redis服务器(instance),该系统执行以下三个任务

1.监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。

2.提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API 向管理员或者其他应用程序发送通知。

3.自动故障迁移(Automaticfailover):当一个主服务器不能正常工作时,Sentinel会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器并让失效主服务器的其他从服务器改为复制新的主服务器:当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。

1.2 哨兵的配置

1.配置文件

sentinel monitor master6379 127.0.0.1 6379 1 # 监视的主机6379

2.启动哨兵的配置文件

sudo redis-server /etc/redis/sentinel.conf

3.将主机6379挂掉(shutdown)

4.哨兵就会进行投票,选出新的主机

哨兵模式可以解决的问题:当主机挂掉之后,从机依然是从机,群龙无首的现象。

二 Redis-常见问题

缓存机制的应用,能够极大的提升程序的性能和效率,但是也会遇到一些问题。

一些典型的问题如下:

2.1 缓存雪崩

一般热点数据都会去做缓存,一般缓存都是定时任务去刷新,定时刷新就有一个问题:

当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样缓存在失效的时候,原本访问缓存就能得到的数据,现在失效了,只能到数据库中访问。这样就会给后端系统比如(DB)带来很大压力。

总结:缓存中大量的数据在同一时间失效,此时相当于没有缓存,所有对数据的请求直接走到数据库,会带来很大压力。

例如:大量的key值过期,导致客户端的访问必须到MySQL数据库中,增加数据库的负担

解决方案:1.分散失效时间,让数据不在同一时间失效。2.可以不设置过期时间(不是很适用)

2.2 缓存击穿

缓存击穿跟缓存雪崩类似,但是又不一样。

缓存雪崩是大量的缓存失效,对这些数据的访问量全部都转移到数据库上了。而缓存击穿是一个key可能会在某些时间点被超并发地访问,属于“热点”数据,在不停的扛着大并发的访问量。当这个热点数据在缓存中过期而失效的时候,大量的并发访问就会穿破缓存,转移到数据库上面,就像在缓存上开了一个洞,所以叫击穿。

总结:当热点数据key从缓存内失效时,大量访问同时请求这个数据,就会将查询下沉到数据库层,此时数据库的负载压力会骤增,我们称这种现象为“缓存击穿”。

缓存击穿解决方法:

1.延长热点key的过期时间或者设置永不过期,如排行榜,首页等;

2.利用互斥锁保证同一时刻只有一个客户端可以查询底层数据库的这个数据,一旦查到数据就缓存至Redis内,避免其大量请求同时穿过Redis访问底层数据库。

2.3 缓存穿透

目录

一 哨兵模式

1.1 Redis哨兵-介绍:

1.2 哨兵的配置

二 Redis-常见问题

2.1 缓存雪崩

2.2 缓存击穿

2.3 缓存穿透

假如用户要访问的数据并不存在(缓存和数据库中都没有),这样每次先到缓存中查找,再到数据库中查找,由于数据并不存在,也就无法将该数据写入到缓存中,那么每次对该数据的查询都会去查询一次数据库。如果用户频繁请求这样的数据,比如用一个不存在的用户id读取用户信息,不论缓存还是数据库都没有,会导致数据库压力过大,若黑客利用此漏洞进行攻击可能压垮数据库。

总结:要查询的数据不存在,缓存无法命中所以需要查询完整数据库,但是数据是不存在的,此时数据库肯定会返回空,也就不会记录的缓存中,这样每次对该数据的查询都会穿过缓存去查询一次数据库。

缓存击穿和缓存穿透从名词上可能很难区分开来,它们的区别是:穿透表示底层数据库没有数据且缓存内也没有数据,击穿表示底层数据库有数据而缓存内没有数据。

解决方案:map<key, null> 存入缓存

1.可以设置一个key以及对应的value为空,并且存放在缓存中,这样当进行查找的时候,如果value为空,就不会再继续在底层数据库上进行查找。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是redis哨兵模式? Redis哨兵模式是Redis高可用性的解决方案之一,它是通过监听Redis主节点和从节点状态的变化来实现自动故障转移的。 2. Redis哨兵模式有哪些优点? Redis哨兵模式具有以下优点: - 自动化的故障转移。 - 提供高可用性,保证Redis服务的可用性。 - 可以在不需要人工干预的情况下,进行故障恢复。 - 支持多个哨兵节点的部署,提高了系统的可靠性。 3. Redis哨兵模式的缺点有哪些? Redis哨兵模式也有一些缺点: - 性能有一定的损耗,因为哨兵节点需要频繁地检查Redis节点的状态。 - 部署和维护成本较高,需要部署多个哨兵节点和Redis节点,并且需要对节点进行监控和管理。 4. Redis哨兵模式的工作原理是什么? Redis哨兵模式的工作原理如下: - 哨兵节点通过订阅Redis节点的频道,获取Redis节点的状态信息。 - 当哨兵节点检测到主节点状态发生变化时,它会通知所有从节点切换到新的主节点。 - 哨兵节点还会监控从节点的状态,当从节点失效时,哨兵节点会自动将该从节点切换到新的主节点。 5. Redis哨兵模式的部署方式有哪些? Redis哨兵模式的部署方式有两种: - 单哨兵模式:只部署一个哨兵节点,主节点和从节点都连接到该节点。 - 多哨兵模式:部署多个哨兵节点,主节点和从节点都连接到多个哨兵节点。其中一个哨兵节点会被选举为领导者,负责进行故障转移。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值