一、架构分类
1.单主架构:只有一个redis节点,如果这个节点挂了,整个redis服务就不可用,这个不能在生产环境使用,一般是本地开发使用;
2.主从架构:一个master+一个或者多个slaver,从服务器是主服务器的副本,从服务器也可以提供查询服务,从而减轻master的负担,主从架构有两个缺点: (1)因为从服务器和主服务器保存的数据是一样的,所以redis能够存储的数据量受限于单台服务器,不能水平扩展,在业务量不大的时候没有问题,但是在业务量较大的时候是不够的; (2)如果主服务器挂掉了,需要手动把一个从服务器切换成主服务器,可用性收到影响。
3.哨兵:为了解决主从架构master挂掉及时切换的问题引入了哨兵,用来监控redis节点,如果master节点挂掉了,哨兵集群通过raft算法选举出合适的从服务器作为新的主服务器并完成切换,但是同样的哨兵模式没有解决水平扩展的问题;
4.redis cluster:通过把hash(key)分成16384个槽位,让不同的redis节点来负责不同的槽位,从而实现水平扩展;集群的节点之间通过gossip协议进行通信,会把自己负责的槽位通过广播的形式告诉其它的节点,主要有以下四种类型的消息: ping:通过这个消息把自己负责的操作告诉集群其它的节点,同时也维持一个心跳 pong:回复ping消息 fail:如果长时间没有收到某个节点的消息时,就会认为这个节点挂了,如果大多数的节点都认为这个节点挂了,那么就会发起选举,通过raft算法选举出master节点 meet:给新加入集群的节点发送meet消息 缺点就是因为分片,所以会导致一些操作不支持,比如:批量的操作,事务性操作等。