redis在redis2.8.9版本中加入了Redis HyperLogLog结构;
Redis HyperLogLog是用来作基数统计的算法,HyperLogLog的好处是:当输入元素的数量或者体积很是很是大的时候,计算基数所需的空间老是固定的,且很小的。
在redis中,每一个HyperLogLog键只需花费12Kb的内存,就能够计算2^64个不一样元素的基数;这和计算基数是,元素越多耗费内存就越多的集合造成鲜明对比。
Redis HyperLogLog的缺点是:只会根据输入元素自己来计算基数,而不存储输入元素自己,因此HyperLogLog不能像集合那样返回输入的各个元素。
那什么是基数呢
基数是数据集中去除全部重复的元素以后数据集的大小
eg:
给定数据集{1,2,3,6,2,4,1},那么该数据集的基数集为{1,2,3,6,4},其基数为5(不重复元素个数)
命令介绍php
PFADD hl1 zset1 zset2 zset3,返回:1
PFCOUNThl1,返回值:3
PFMERGE hl1 hl2
phpredis操做HyperLogLog
phpredis中没有直接用来执行HyperLogLog相关命令的函数,可是phpredis提供了能够直接执行redis命令的方法:rawCommand(),该方法能够执行任意的redis原生命令redis
$redis->rawCommand("set", "foo", "bar");返回值;true