77、Redis哨兵机制注意事项&缓存穿透&雪崩&击穿解决方案

一、回顾Redis主从复制与哨兵机制

Redis主从复制

基本概念:
单个Redis如果因为某种原因宕机的话,可能会导致Redis服务不可用,可以使用主从复制实现一主多从,主节点负责写的操作,从节点负责读的操作,主节点会定期将数据同步到从节点中,保证数据一致性的问题。

Redis哨兵机制

Redis的哨兵机制就是解决我们以上主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。

二、传统Redis哨兵集群存在那些缺陷

在这里插入图片描述

传统的哨兵集群方式存在那些缺陷?

1.Redis的哨兵集群方式,每个节点都保存相同的同步的数据,可能会存在冗余的数据;其次能允许有一个主的节点,属于中心化集群
去中心集群方式、数据均摊到每个节点存放。
在这里插入图片描述

三、RedisCluster分片集群实现原理

2.Redis Cluster 从3.0开始是Redis官方推出一种去中心的集群方式。采用hash槽分片的将数据存放到多个不同的Redis中,从而可以去减少冗余的数据。
核心原理:采用hash槽,预先分配16384个卡槽,并且将卡槽分配到具体Redis的节点,通过key进行crc16(key)%16384=卡槽,可以根据卡槽存到具体Redis节点,注意一个卡槽可以存放多个不同的key;只有主的节点才会分配卡槽从节点没有卡槽

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
7000重定向到7002节点
在这里插入图片描述
在这里插入图片描述

卡槽作用:

决定key存放具体的服务器位置,从而实现均摊存放数据。 类似我们在数据库中具体的分表 优点:动态实现扩容和缩容

四、基于不同Redis配置文件启动多个不同的Redis.

在这里插入图片描述
6台服务器
搭伪集群:ip相同,port不同
在这里插入图片描述

五、Linux环境上搭建RedisCluster

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

mkdir rediscluster
cd rediscluster/
mkdir redis7000
mkdir redis7001
mkdir redis7002
mkdir redis7003
mkdir redis7004
mkdir redis7005

每个配置文件内容

daemonize yes #后台启动
protected-mode no ; ## 允许外部访问
port 7005 #修改端口号,从7000到7005
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file 7000nodes.conf #自动生成
cluster-node-timeout 15000 #节点通信时间
logfile /usr/rediscluster/redis7005/redis.log

启动我们的redis

/usr/redis/bin/redis-server /usr/rediscluster/redis7000/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7001/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7002/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7003/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7004/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7005/redis.conf

连接一个redis
/usr/redis/bin/redis-cli -h 127.0.0.1 -p 7000

(error) CLUSTERDOWN Hash slot not served 说明没有分配hash槽

/usr/redis/bin/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
在这里插入图片描述
(建议最好使用服务器的ip地址搭建)
1表示:主节点:从节点=1:1
2表示:2主2从

前面3台是主,后面3台是从

分配我们hash操作

/usr/redis/bin/redis-cli -h 127.0.0.1 -p 7000

修改为Redis的集群方式连接/usr/redis/bin/redis-cli -h 127.0.0.1 -p 7000 –c
/usr/redis/bin/redis-cli --cluster help
在这里插入图片描述
在这里插入图片描述

六、RedisClient连接Redis分片集群

没有分配卡槽
在这里插入图片描述

在这里插入图片描述

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

发布了119 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44722978/article/details/103264695
今日推荐