一尘不染

Redis复制和Redis分片(集群)的区别

redis

  1. 有人知道Redis复制和Redis分片之间的区别吗?
  2. 它们有什么用?Redis将数据存储在内存中,这如何影响复制/分片?
  3. 可以同时使用它们吗?

阅读 846

收藏
2020-06-20

共1个答案

一尘不染

分片几乎是复制的对立面,尽管它们是正交的概念并且可以很好地协同工作。

分片,也称为分区,是通过密钥对数据进行拆分。复制(也称为镜像)是复制所有数据。

分片有助于提高性能,减少任何一种资源的命中和内存负载。复制对于获得高可用性的读取很有用。如果您从多个副本中读取数据,则还将降低所有资源的命中率,但是所有资源的内存需求均保持不变。应该注意的是,虽然可以写入从属设备,但是复制仅是master->
slave。因此,您无法以这种方式扩展写入。

假设您具有以下元组:[1:Apple],[2:Banana],[3:Cherry],[4:Durian],我们有两台机器A和B。通过分片,我们可以将密钥2,4存储在机器A;
通过复制,我们将密钥1,2,3,4存储在计算机A上,将1,2,3,4存储在计算机B上。

分片通常通过对密钥执行一致的哈希来实现。上面的示例是通过以下哈希函数h(x){return x%2 == 0?A:B}实现的。

为了结合这些概念,我们可以复制每个分片。在上述情况下,机器A的所有数据(2,4)可以在机器C上复制,机器B的所有数据(1,3)可以在机器D上复制。

尽管某些交叉键功能将不再起作用,但任何键值存储(Redis只是其中的一个示例)都支持分片。Redis支持开箱即用的复制。

2020-06-20