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节点会影响到集群的架构;

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

重新创建集群;

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

相关推荐
呆呆小雅1 小时前
C#关键字volatile
java·redis·c#
miss writer1 小时前
Redis分布式锁释放锁是否必须用lua脚本?
redis·分布式·lua
亽仒凣凣3 小时前
Windows安装Redis图文教程
数据库·windows·redis
希忘auto4 小时前
详解Redis的常用命令
redis·1024程序员节
岁月变迁呀11 小时前
Redis梳理
数据库·redis·缓存
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭11 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
Code apprenticeship13 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站13 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶13 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
404NooFound13 小时前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql