Redis精确去重计数方法(咆哮位图)
但是如果爆款文章阅读量太大,set 会浪费太多存储空间。这时候我们就要使用 Redis 提供的 HyperLogLog 数据结构来代替 set,它只会占用最多 12k 的存储空间就可以完成海量的去重统计。但是它牺牲了准确度,它是模糊计数,误差率约为 0.81%。将两个位图做一下 AND 计算,然后统计位图中位 1 的个数。只有单块内的位1超过了一个阈值,才会一次性将稀疏存储转换为密集存储。咆哮位图除了可以大幅节约空间之外,还会降低 AND、OR 等位运算的计算效率。如果块内非常稀疏,那么只需要对这些小整数列表进行集合的 AND、OR 运算,如是计算量还能继续减轻。最多会有64k个块。当列表中的数字超出4096个时,会立即转变成普通位图。Redis 确实没有原生的,但是咆哮位图的 Redis Module 有。
下载地址
用户评论