Redis 支持基于 HyperLogLog 的基数计数统计,其算法思想和前两篇提到的 Linear Counting 和 LogLog Counting 的算法类似,本篇主要分析其源码——github:antirez/redis/src/hyperloglog.c 中的代码 Header Header 总共有 16 个字节,分别为 HYLL E N/U Cardin 如下图所示: HYLL 是 4 个魔法字节,为”HYLL” E 为 1 个字节表示Dense/Sparse N/U 为未来留下的空字节,共 3 个字节 Cardin 为缓存区,8 个字节 代码实现如下: struct hllhdr { char magic[4]; /* “HYLL” */ uint8_t encoding; /* HLL_DENSE or HLL_SPARSE. */ uint8_t notused[3]; /* … Continue reading “HyperLogLog 算法(三)—— Redis 中的 HyperLogLog”
HyperLogLog 算法(三)—— Redis 中的 HyperLogLog
No Comments so far