redis集群有三种方式:主从复制,哨兵,集群(master-cluster)。
1.主从复制(Master-Slave)
数据库分为两类,Master数据库和Slave数据库。
有以下特点:
1.master一般是接受读写的,slave只接受读操作。
2.当master接受写操作后会将命令发送给slave执行,从而实现数据一致性
3.一个master下面可以有多个slave,但是一个slave上面只能有一个master
原理:
1 从服务器连接主服务器发送sync命令。
2 主服务器持久化数据生成rdb文件并缓存这段时间的写命令
3 主服务器向从服务器发送rdb文件和缓存的命令
4 从服务器载入rdb快照后执行缓存的命令(从服务器初始化完成)
5 主服务器每接收到一个写命令就发送给从服务器执行(从服务器初始化完成后的操作)
2 .哨兵模式
哨兵是用来监控主从数据库的,当master挂掉后选择一个salve当做master。
与master建立连接后,哨兵会执行三个操作,这三个操作的发送频率都可以在配置文件中配置:
定期向master和slave发送INFO命令
定期向master个slave的_sentinel_:hello频道发送自己的信息
定期向master、slave和其他哨兵发送PING命令
master挂掉后从slave中选取规则
1.所有在线的slave中选择优先级最高的,优先级可以通过slave-priority配置
2.如果有多个最高优先级的slave,则选取复制偏移量最大(即复制越完整)的当选
3.如果以上条件都一样,选取id最小的slave
3.集群:
redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储,也就是说每台redis节点上存储不同的内容。
使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行。