集群分类
主从复制 Replication
高可用 Sentinel
集群 Cluster
分布式 twemproxy
主从复制 Replication:
一个Redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他复制品称 为Slaves
只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步
只有Master可以执行写命令,Slaves只能执行读命令
从服务器执行客户端发送的读命令,比如GET、LRANGE、SMEMMBERS、HGET、 ZRANGE等等
客户端可以连接Slaves执行读请求,来降低Master的读压力
主从复制创建:
redis-server --port 6380 --slaveof 127.0.0.1 6379 配置当前服务器为6379端口服务器的slave
SLAVEOF 192.168.1.1 6379 将服务器从master转换成slave
SLAVEOF NO ONE ,将服务器重新恢复到Master,不会丢弃已同步数据
主从复制问题:
一个Master可以有多个Slaves
Slave下线,只是读请求的处理性能下降
Master下线,写请求无法执行
其中一台Slave使用SLAVEOF no one命令成为Master,其它Slaves执行SLAVEOF命令 指向这个新的Master,从它这里同步数据
以上过程是手动的,能够实现自动,这就需要Sentinel哨兵,实现故障转移Failover操作
高可用
Sentinel:
Redis Sentinel是一个分布式系统,可以在一个架构中运行多个Sentinel进程
启动 Sentinel:
将src目录下产生redis-sentinel程序文件复制到$REDIS_HOME/bin
启动一个运行在Sentinel模式下的Redis服务实例
redis-sentinel
redis-server /path/to/sentinel.conf --sentinel
Twemproxy:
Twitter开发,代理用户的读写请求
Twitter开发的代理服务器,他兼容Redis和Memcached,允许用户将多个redis服务器 添加到一个服务器池(pool)里面,并通过用户选择的散列函数和分布函数,将来自 客户端的命令请求分发给服务器池中的各个服务器
Twemproxy安装见安装文档
Redis自带集群:
3.0支持
由多个Redis服务器组成的分布式网络服务集群
每一个Redis服务器称为节点Node,节点之间会互相通信。两两相连
Redis集群无中心节点