一句话:HyperLogLog用来统计一个很大很大的数据集(海量数据)的基数,是一个占用空间极低的set,省空间版的set
Redis在2.8.9版本中添加了HyperLogLog数据结构
1.区分UV和PV:
UV:Unique Vistor 独立访问量 1天内同一个用户多次访问该网站,只记录一次
PV:Page View 页面访问量,访问一次页面,记录一次,多次打开这个页面,记录多次PV,用来衡量网站的流量
所以PV往往会比UV大,UV/PV这个比值可以看出来一个用户访问这个网站是点完一次就走,还是在这个网站中浏览了很多页面
2.什么是基数?
一个数据集是{1,3,5,7,5,7,8},那么这个数据集的基数集就是{1,3,5,7,8},这个数据集的基数就是5(也就是说数据集去重后的元素个数)
所以HyperLogLog和Set很像,但是如果一条key-value键值对的value是set,当set中几百万条数据的时候,这条key-value键值对很耗费空间
3.为什么用HyperLogLog来统计基数而不是用其他的来统计呢?节省内存
比如统计1亿个数据的基数,如果用set来存储这1亿个数据,占用的空间内存非常大,但是