gpt4 book ai didi

database - 什么是 hyperloglog,它有什么用?

转载 作者:IT王子 更新时间:2023-10-29 06:03:31 24 4
gpt4 key购买 nike

我正在研究 Redis 支持的数据结构,但找不到可以让我理解什么是 HyperLogLog 的解释。

我如何使用它,为什么它有好处?

最佳答案

基本上是一种 Redis Set,它使用优化的算法通过避免大量消耗内存来计算元素。 SetHyperLogLog 之间的区别在于,对于 HyperLogLog,您可以添加、计算唯一元素并将一些 HyperLogLog 合并到另一个中,所以基本上您不存储HyperLogLog 中的成员,就像您在 SET 中所做的那样,并检索它们,您只需存储不同成员的出现,这就是 HyperLogLog 不提供检索其存储成员的命令的原因。

一个明确的用例可能是,如果你想拥有一个巨大的 SET,你想计算集合中唯一数据的数量的这么多倍,你对集合中的哪些数据不感兴趣,你只感兴趣即使集合增长很多,也会消耗低内存。例如,假设您有一个具有大量用户且所有用户都非常活跃的高影响力系统,并且您有兴趣了解系统每个网页中的唯一身份访问者的数量。您希望实时更新,因此您将每秒查询每个网站的唯一身份访问者。您可以为系统中的每个 URI 创建一个 HyperLogLog,它将代表该网页,并且每次用户访问一个 URL 时,您都会 PFAAD user_id:

PFAAD /api/show/concerts id789989

然后你将每秒迭代每个 URL-HyperLogLog 以获得唯一用户访问者的数量

PFCOUNT /api/show/concerts

145542

PFCOUNT /api/show/open-airs

25565223

你会说,是的,但我可以通过使用 SET 获得相同的功能,好处是将每个集合中的 user_id 作为成员。是的,你可以,但是你会通过使用集合消耗大量内存,每次(秒)你查询每个集合以使用 SCARD 命令获取唯一访问者的数量,你会花费更多的内存,所以至少你需要存储 user_ids出于某种原因,HyperLogLogs 作为独特元素的计数器是更好的选择。对于我们的用例,假设有 200-300 个集合,里面有大约 20-30k 的用户。

HyperLogLog与Set命令的对应关系:

  • PFADD = SADD
  • PFCOUNT = SCARD
  • PFMERGE = 联合

关于database - 什么是 hyperloglog,它有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49261930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com