NoSQL之Redis集群(缓存加速)

redis工作模式:

单节点;

集群的方式:

主从模式(2.8之前)

解决的数据备份,读写分离,无法实现自动化故障转移;

无法对master扩容;

哨兵模式(2.8之后)

利用哨兵检测master的状态;

自动的故障转移;

无法对master扩容;

集群模式(3.0之后)

redis cluster

分片:

客户端

代理设备

服务器端

master只有一个slave

master故障-->slave

(ping-pong)

master有多个slave

选举,选出新的主;

slave广播(故障切换的认证请求),拉选票,让master投票;

master(故障转移的认证应答),投票给slave;

如果a-slave票数多,a成了master;

如果票数一样多,再选;

期望,半数以上;

对于集群服务器的数量建议为奇数台;

主从架构的优缺点

哨兵模式的优缺点

集群模式的优缺点

redis集群至少有三个master,而单个master至少对应一个slave;

将软件包拉到各个服务器中;开启同步会话;

解压:

cd到解压目录;开始编译;

编译后安装;指定安装目录;

命令优化;

安装redis;

然后搭建集群环境;

修改配置文件;

修改监听地址;

修改redis保持持久化的工作模式;

开启集群模式及其集群模式的配置文件;和超时时间;

将以下语句yes改成no;

插槽覆盖功能;

改到这里就修改完毕了,保存退出,重启一下redis;

然后取消同步会话功能;创建集群;

因为redis的特殊之处就在于去中心化的特性;

如果检查无误,就输入yes继续;

成功的提示页面;

此时就可以登录任意一个节点查看cluster的状态信息;

对于redis集群而言,任意一个节点的IP都可以作为登录的入口;

如何登录集群呢?

此时会发现,创建键值对,哈希运算后生成槽放置到集群的节点上;

这就是分布式存储;且查看提示符,会发现,会切换到其他主机上;

而查看的也是主机192.168.10.103的信息;

如何动态的扩缩容?

这里采用脚本的方式快速部署;

随意找一个节点进行添加;

但是此节点,写入的话不会分配给该节点;因为该节点没有槽;

第二种添加的语句;

要指定集群的任意一个节点的IP及端口;

但是这种添加的方法也没有槽位;

默认添加进来的新的节点都会以master的身份,添加进去;

如果想让添加的节点成为现有节点的slave;如何实现?

先加入到集群中,然后以新节点的IP登录到集群中,指定要作为哪个节点的从;

这时要指定master的ID;

此时,108就成为了107的slave;

重新分配槽位;

然后再登录进去,查看节点信息;

如何删除节点;即缩容;
先指定集群中的任意一个IP地址,再指定删除哪一个节点的ID;
会从集群中忘记该节点;FORGET

还会把该节点关闭掉;

删除一个从节点的时候,可以直接删掉,因为该节点没有分配槽位,但是删除一个主节点的话,会提示该节点不会空,即有槽位;

首先要把该节点数据库清空,然后重置一下该节点,再去移除该节点;

再把该节点删除掉;

但是删除了master节点,以往分配给该节点的槽位还存在,所以要重新分配一下槽位,给其他节点;

可以看出,会提醒无法重置槽位;

删除master节点会影响到集群的架构;

此时要同步集群的会话,清空数据库,然后重置;

重新创建集群;

但是针对该问题,有另外的解决方案,就是移动槽位,随即也会把数据移动走,再删除该节点就没影响了;

相关推荐
山楂树の39 分钟前
【计算机系统原理】 组相联 Cache 地址划分与访问过程
缓存
sghuter2 小时前
Ubuntu安装Redis
redis·ubuntu·bootstrap
皙然5 小时前
深入拆解缓存一致性:从原理到实战,彻底解决数据不一致难题
缓存
皙然6 小时前
深入拆解MESI协议:从原理到实战,搞懂CPU缓存一致性的核心机制
java·缓存
深蓝轨迹7 小时前
Redis 消息队列
java·数据库·redis·缓存·面试·秒杀
于樱花森上飞舞8 小时前
【Redis】初识Redis
数据库·redis·缓存
山楂树の10 小时前
【计算机系统原理】Intel 与 AT&T 汇编指令格式转换
汇编·学习·缓存
努力学习的小廉10 小时前
redis学习笔记(九)—— Redis 持久化
redis·笔记·学习
山楂树の10 小时前
【计算机系统原理】 直接映射(模映射) Cache 地址划分与访问过程
学习·缓存
cyforkk10 小时前
缓存穿透难题:当 Value 为空字符串时,该如何优雅处理?
缓存