各位观众,掌声鼓励!今天咱来聊聊 Redis 里的一个神奇玩意儿——HyperLogLog,简称 HLL。别看名字怪吓人的,其实它是个非常接地气的工具,专门解决大数据去重统计的难题。 一、啥是大规模去重统计?听起来就很贵! 想象一下,你经营着一个大型电商平台,每天都有海量的用户访问你的网站。你需要知道每天有多少独立访客(Unique Visitors,UV)。注意,是“独立”访客,也就是说,同一个人一天来十次,也只能算一个。 传统的做法,比如用集合(Set)来存储所有访问过的用户ID。这样,每来一个用户,就往集合里塞一个。最后集合里元素的个数就是UV。 听起来很简单,对不对? But!人生最怕的就是这个But! 如果用户量很少,比如只有几百个,Set 完全Hold住。但是,如果用户量达到百万、千万甚至亿级别,Set就需要消耗大量的内存。 这就相当于你要盖一栋摩天大楼来放几张纸,是不是有点浪费? 这时候,HyperLogLog 就闪亮登场了。 它的厉害之处在于,可以用极小的内存空间来估算巨量数据的基数。 啥是基数? 就是集合中不同元素的个数,也就是我们说的UV。 二、HyperLogLo …