Redis集群
这节介绍Redis的集群模式 主从模式提供了读写分离的支持,Sentinel提供了高可用的保障,满足了读模式下的横向扩展,但主节点只有一个,集中式的写模式无法应对不断增长的写需求。 Redis 3.x 版本提供了Redis cluster 功能,服务端sharding使用槽作为分布式的解决方案。对于 2.x版本,则通过客户端API提供的客户端sharding方式,使用一致性哈希来实现数据分片。此外,twiter开源的 twemproxy 和豌豆荚的 codis ,则采用代理模式来实现。 1 服务端模式 对于客户端来说,整个集群被看做一个整体,客户端可以连接任意一个节点进行操作,就像操作单一Redis数据库一样。当客户端操作的key没有分配到该节点上时,会返回转向指令,指向正确的节点。 1.1 集群的建立 3.x 版本的Redis节点可以通过打开 clustrer-enabled 选项来开启服务器的集群模式,再通过 CLUSTER MEET <ip> <port> 命令连接其他节点。 新加入的节点B通过 CLUSTER MEET 命令同节点A建立连接后,节点A会通过 Gossip协议 将节点B的信息传播给集群中的其他节点,当其他节点发现新加入的节点B后也会主动同它建立连接。处于集群状态的节点同单机模式下的服务器实例没什么区别,只是只能使用 db 0 数据库