Redis(六)主从复制、哨兵模式和缓存穿透、击穿、雪崩

基于:【狂神说Java】Redis最新超详细版教程通俗易懂

1 集群节点划分

是指将一台Redis服务器(主节点)的数据复制到其他Redis服务器(从节点);数据是单向的,只能由主节点到从节点;主节点以写为主,从节点以读为主;

  • 配置只用配置从节点,不用配置主节点(默认都是主节点);
  • 主节点可写可读,从节点只能读不能写,主节点的写会自动同步到从节点;

2 从节点redis.conf配置

# 主节点的ip和端口
replicaof 127.0.0.1 6379
# 主节点的密码
masterauth 123456

查看当前配置:INFO REPLICATION 里面的role:master就是当前节点的角色;

3 哨兵模式

当主节点宕机之后,如果不采取任何措施,从节点一直存在,但无法工作,浪费资源;使用哨兵模式可以采用投票法,自动选取一个从节点变为一个新的主节点;哨兵进程也宕机了怎么办?可以配置多个哨兵;

3.1 sentinel.conf配置文件

# 哨兵进程的端口
port 26379
# 守护进程,后台运行
daemonize yes
# 日志文件
logfile "sentinel.log"
# 目录
dir "./"
# 默认主机的名字、ip和端口,最后一个值表示多少个哨兵认为主节点宕机是真的宕机了
sentinel monitor mymaster 192.168.1.1 6379 1
# 多少毫秒之后认为主节点宕机了
sentinel down-after-milliseconds mymaster 30000
# 节点名的密码
sentinel auth-pass mymaster 123

3.2 启动哨兵进程

sudo redis-sentinel sentinel.conf

3.3 知识点总结

  • 如果主节点宕机,哨兵捕捉到信息记录,一段时间阈值之后,就投票法选择一个丛节点当新的主节点;
  • 当原主节点恢复之后,挂在到集群当从节点

4 缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大

解决办法:

  1. 接口层增加校验;
  2. 存储层不命中时,缓存中存放空对象,同时设置过期时间(因为,可能在过期时间内写入了)

5 缓存击穿

缓存击穿是指某一并发数据缓存到期时,缓存中没有数据,大量请求涌入数据库,造成数据库压力过大

解决办法:

  1. 设置缓存不过期;
  2. 加互斥锁,限流去查询;

6 缓存雪崩

缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

解决办法:

  1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
  2. 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。
  3. 设置热点数据永远不过期。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值