代码之家  ›  专栏  ›  技术社区  ›  Marco Antonio Soares Júnior

哈希和模式之间的性能差异

  •  0
  • Marco Antonio Soares Júnior  · 技术社区  · 2 年前

    比方说,我需要为客户存储他们查看的每个产品的一些数据。 此外,当客户更新任何信息时,我需要能够一次删除客户的所有密钥。 为此,我正在考虑使用Redis模式,其中密钥的格式为${customer-id}:${product-id}。 通过使用模式${customer id}:*,我可以找到并删除所有密钥。 然而,我也知道,我可以使用以${customer id}为主密钥、以${product id}为子密钥的哈希,并将相应的数据作为子密钥的值。如果我需要检索所有的子密钥,我会使用HGetAll而不是模式。

    在这个场景中使用散列或模式之间有什么性能差异吗?

    0 回复  |  直到 2 年前
        1
  •  1
  •   for_stack    2 年前

    在您的场景中,您应该使用HASH。

    如果您的数据集很大,则速度较慢 SCAN 并删除所有与模式匹配的键(另请注意:使用 KEYS 命令)。

    使用hash,您可以使用删除整个客户信息 UNLINK ,速度快,不阻塞Redis。当你需要获得属于客户的所有物品,并且有很多物品时,你最好使用 HSCAN 而不是 HGETALL ,因为后者可能会阻塞Redis。