是否有可能让写入请求直接通过Redis中的主服务器传递给写入请求?

时间:2016-10-25 20:31:51

标签: caching redis replication key-value database-replication

我们需要一个内存密钥/值存储,可以复制到其他数据中心 这是我们的要求:
1.所有数据中心必须具有相同的数据库(可以接受一点重新同步,如30-60秒)。我知道我们只能有一台主服务器,没关系。一个数据中心中只有一个数据库是主数据库。但是如果主服务器死了,那么我们需要选择一个新的主服务器 2.我们需要能够向任何从节点发送写请求,并将其直接发送到主节点。

我知道有一个Redis集群可以接受所有写请求,但它不适合我们,因为数据是在节点之间分配的(因此,所有数据中心的所有服务器都将处理不同的数据,但我们需要在所有数据中心都有相同的数据,因为我们只有5%的写入和95%的读取。

是否可以通过Redis实现?

1 个答案:

答案 0 :(得分:0)

我不对。我发现它实际上可以用Redis Cluster完成。我们必须创建一个主节点并为其分配所有哈希槽。之后我们必须创建从节点并复制主节点。在这种情况下,我们将进行自动故障转移,所有节点都将保留相同的数据。

设置从属节点。即复制一个主人,我们需要使用以下内容:

./redis-trib.rb add-node --slave --master-id {master_id} {master_ip}:{master_port} {slave_ip}:{slave_port}

或者我们可以添加一个新的空主人:

./redis-trib.rb add-node {any_node_ip_in_cluster}:{port} {new_node_ip}:{port}

然后将其转为奴隶:

redis {master_ip}:{master_port}> cluster replicate {master_id}

P.S。 Redis要求至少拥有3个主服务器,但它不是集群的硬限制。我们仍然只能有一个主节点,它将完全正常。