HyperLogLog主要用来做基数统计,即取count distinct。用HyperLogLog做基数统计有一个好处,那就是不会因为数据量大而占用很多内存,即使数据量再大,占用的内存也最多12kb。
HyperLogLog只会根据输入的数据计算基数,并不会存储数据,所以不能获取输入的数据。HyperLogLog计算出的基数只是个近似值,在大数据量时,可能有一些误差,这是由算法决定的,不可调和。
HyperLogLog key用type命令查看,会返回"string",用get命令查看,会返回一个以"HYLL"开头的字符串。
HyperLogLog涉及的命令以pf开头,有三个,分别是pfadd、pfmerge、pfcount。
1、pfadd:往一个HyperLogLog类型的key中插入数据
语法:pfadd key element [element . . .]
如pfadd rpc thrift grpc dubbo taf trpc
2、pfmerge:合并一个或多个HyperLogLog类型的key的基数集到一个新的HyperLogLog类型的key中
语法:pfmerge destkey sourcekey [sourcekey . . .]
假如还有一个HyperLogLog类型的key,pfadd application_protocol ftp telnet http trpc
pfmerge po rpc application_protocol
3、pfcount:返回一个或多个HyperLogLog类型的key的近似基数
语法:pfcount key [key . . .]
如pfcount rpc,会返回5。
pfcount application_protocol,会返回4。
pfcount po,会返回8。
pfcount rpc application_protocol,会返回8。
pfcount rpc application_protocol po,会返回8。
HyperLogLog类型的key可以持久化吗?实测,可以。