redis HyperLogLog使用

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可以持久化吗?实测,可以。

原文地址:https://www.cnblogs.com/koushr/p/5873397.html