Redis的发布订阅、主从复制、哨兵机制和缓存解析

Redis可以实现发布和订阅,这种情况一般都是用消息队列实现的。

多人在线聊天和微信公众号等...

一个或者多个客户端订阅某个或者多个频道,当其他客户端向该频道发送消息的时候,订阅了该频道的客户端都会收到对应的消息。

这里截取狂神说java的一张图

主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。当老大的redis服务器中的数据发生改变时,从服务器的数据也会发生改变,每次成为主服务器小弟的时候都会实现一次全量复制,默认情况下每个redis都是老大。

每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能由一个主节点。

哨兵机制

当主服务器宕机之后必须手动选取一个主服务器,效率太低,所以出现了哨兵机制。

哨兵会不时的给服务器发送信息,收到返回信息。假如一台服务器宕机,哨兵接收不到返回的消息,就会在其他服务器中在选出一台服务器当作主机。

缓存穿透

在用户请求在缓存中找不到自己请求的信息时,请求就会发送到数据库,如果请求量大起来,数据库撑不住这么大的访问量,就会发生数据库崩毁,这就是缓存击穿。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻击。
解决方法:一次请求若在缓存和数据库中都没找到,就在缓存中方一个空对象用于处理后续这个请求。

缓存击穿

缓存击穿的目的性更强,一个存在的key,在缓存过期的一刻,同时有大量的请求过来,请求直击数据库,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。这就是缓存被击穿。

解决方法:

1. 设置热点数据永不过期

就是缓存不过期,但是占用内存会比较大。

2. 加互斥锁(分布式锁)

在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。保证同时刻只有一个线程访问。这样对锁的要求就十分高。

缓存雪崩

缓存中大量的数据设置了同一时间过期,请求大量冲向数据库,导致数据库瘫痪,压力骤增,引起雪崩。

解决方法:

1.数据预热,部署上线前将大量的数据先访问一遍,将大量数据加到缓存中,设置不同的过期时间,让缓存消失的时间不同。

2.限流访问,当缓存失效后,通过加锁或者队列限制访问读写数据库的线程。

3.搭建集群。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LeeGaKi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值