Redis集群是一个分布式(distributed)、容错(fault-tolerant)的 Redis 实现, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset)。
Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)。
Redis 集群提供了一种运行 Redis 的方式,其中数据在多个 Redis 节点间自动分区。Redis 集群还在分区期间提供一定程度的可用性,即在实际情况下能够在某些节点发生故障或无法通信时继续运行。但是,如果发生较大故障(例如,大多数主站不可用时),集群会停止运行。
Redis 集群是Redis 的一个分布式实现,它是一个网状结构,每个节点都通过 TCP 连接跟其他每个节点连接。
现在来看看Redis集群实现了哪些目标?
在1000个节点的时候仍能表现得很好并且可扩展性(scalability)是线性的。集群之间使用异步复制,并且没有合并的操作。
可接受的写入安全(Write safety)级别:那些与大多数节点相连的客户端所做的写入操作,系统尝试全部都保存下来。不过还是会有小部分写入会丢失。
可用性(Availability):在绝大多数的主节点(master node)是可达的,并且对于每一个不可达的主节点都至少有一个它的从节点(slave)可达的情况下,Redis 集群仍能进行分区(partitions)操作。
那么Redis集群环境与非分布式Redis环境在功能上有没有什么不同的呢?
集群的数据库只有0,且不支持SELECT。
由于集群将键分布在不同的槽(slot)中,所以涉及到多键值的复制操作也是不支持的,像set里的并集(unions)和交集(intersections)操作。
更多redis技术文章,请访问Redis使用教程栏目!