一、架构类型
1、单机架构
2、分布式架构
二、Redis Cluster 架构
1、Redis Cluster特性
三、集群伸缩
1、原理
2、扩容
2.1、准备新节点
- 开启“集群模式”
- 配置和其他节点统一
- 启动后是孤儿节点
redis-server conf/redis-6385.conf
redis-server conf/redis-6386.conf
2.2、加入集群
cluster meet ip 6385
cluster meet ip 6386
- 观察加入后集群配置:
cluster nodes
- 扩容目的:
- 为它迁移槽和数据实现扩容
- 作为从节点负责故障转移
其他扩容方式:
官方工具:redis-trib.rb
,可检测新节点是否为孤立节点。
2.3、迁移槽和数据
2.3.1、迁移槽计划
2.3.2、迁移数据
2.3.3、添加从节点
3、缩容
3.1、下线迁移槽
3.2、忘记节点
cluster forget {downNodeId}
3.3、关闭节点
./redis-trib.rb del-node ip:port nodeid
4、客户端路由
4.1、moved重定向
4.1.1、槽命中:直接返回
4.1.2、槽不命中:moved异常
4.1.3、redis-cli举例
4.2、ASK重定向
- slot迁移过程中客户端访问
- key已经迁移到新的节点,需要使用ASK重定向解决
4.2.1、重定向解决
4.2.2、moved和ASK的区别
4.3、smart客户端
4.3.1、smart客户端原理
追求性能(直连,取消代理)