redis集群三种方式
超过20g内存,建议集群
1. 主从复制
利用“SLAVEOF NO ONE 不会丢弃同步所得数据集”这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行
在这里插入图片描述
实现方式:slaveof命令(从机使用),配置
主从复制依赖rdb
在这里插入图片描述 在这里插入图片描述
maxmemory 分片不宜过大
在这里插入图片描述
-
复制风暴
主节点重启后,从节点同步问题
在这里插入图片描述
2. sentinel
sentinel 不存储数据,监控主从节点. 自动故障转移
sentinel.conf
#2,指明当有多少个sentinel认为一个master失效时,master才算真正失效。
sentinel monitor mymaster 127.0.0.1 6379 2
# 除了第一行,其他配置的通用格式 sentinel [option_name] [master_name] [option_value]
sentinel down-after-milliseconds mymaster 60000
# sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地认为这个master已经不可用了。而这个down-after-milliseconds就是用来指定这个“一定时间范围”的,单位是毫秒。
sentinel failover-timeout mymaster 180000
# sentinel执行failover超过设置时间时会被认为失败。将由其他sentinel继续执行failover,单位毫秒
sentinel parallel-syncs mymaster 1
# 在发生failover主从切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成主从故障转移所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为主从同步而不可用。可以通过将这个值设为1来保证每次只有一个slave处于不能处理命令请求的状态。
在这里插入图片描述
启动
# 方式1
redis-server s:/redis/sentinel/sentinel.conf --sentinel
# 方式2,需要有redis-sentinel程序才行,该程序可以从redis源码中拷贝
redis-sentinel s:/redis/sentinel/sentinel.conf
3. cluster
4. 缓存问题
服务高可用
穿透:缓存未命中,穿透到底层数据库
击穿:一点超时,大并发击穿到底层数据库
击穿是访问一个key,雪崩是redis的数据大批量消失(雪崩:缓存集体过期,或者Redis宕机)
-
缓存穿透解决--:布隆过滤器,缓存空对象
布隆过滤器.png
缓存空对象可能出现的问题:
image.png -
缓存击穿解决:设置热点数据永不过期,加互斥锁
image.png
缓存雪崩解决:redis高可用(异地多活),限流降级,数据预热
image.png
网友评论