在Redis 数据结构中,HyperLogLogs
与bitmaps
经常做比较。事实上,HyperLogLogs
在Redis 中也并不一个单独的数据结构,如果我们通过 type 查询 HyperLogLogs 的数据结构的话,机会发现其实它在Redis中也是string
类型。那么,HyperLogLogs 在Redis 中的定位是什么,它在哪些场景中使用最合适呢?
HyperLogLogs 基础特性
HyperLogLogs 常见命令
pfadd key emement [element ...]
添加元素到对应的 key 中
pfcount key[key ...]
返回给定key的基数值
PFMERGE key [key ...]
将多个 HyperLogLogs 合并为一个 HyperLogLogs
常见场景
HyperLogLogs 主要的应用场景就是进行基数统计。例如:对于 电商,尤其是亿万级的电商而言,如何计算出 主页面每天被多少个不同的账户访问过是一个重要的问题。而统计出有十亿的访问量或者十亿零十万的访问量其实是没有太多的区别的,因此,在这种业务场景下,为了节省成本,其实可以只计算出一个大概的值,而没有必要计算出精准的值。
与 Bitmaps 的区别
我们在之前的一章说过,Bitmaps 也可以进行统计,但是注意:我们限定了数量级在千万级!对于亿万级的数据而言,Bitmaps 的内存中占用是一个不可忽视的问题。一旦超过千万,达到亿万级的使用,建议直接上 HyperLogLogs。