关闭

Redis教程(七) HyperLogLog类型

393人阅读 评论(0) 收藏 举报
分类:

 

 

Redis教程() HyperLogLog类型


1 Redis数据类型

Redis的键值可以支持数据类型:字符串,列表,散表,集合,有序集合、HyperLogLog,通过选用不同的数据结构,用户可以使用Redis解决各式各样的问题。


1.1 HyperLogLog类型

      Redis2.8.9版本添加了 HyperLogLog结构。

     基数:集合中不同元素的数量。比如 {'java', 'C#', 'ruby', 'C#', 'java'}的基数就是 3

     估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围之内。

      Redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。在 Redis里面,每个 HyperLogLog键只需要花费 12 KB内存,就可以计算接近 2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog不能像集合那样,返回输入的各个元素。

 

1、PFADD命令:将任意数量的元素添加到指定的HyperLogLog里面。如果 HyperLogLog估计的近似基数(approximated cardinality)在命令执行之后出现了变化,那么命令返回 1否则返回 0如果命令执行时给定的键不存在,那么程序将先创建一个空的 HyperLogLog结构,然后再执行命令。

     PFADD  address"/user/recharge"

     PFADD  address"/user/findpassword"

         PFADD  address"/user/rechargeSuccess" "/user/rechargefail"

         PFADD address "/user/zijinliushui" "/user/myinvitation""/user/myrewards"


 

2、PFCOUNT命令:命令作用于单个键时,返回储存在给定键的 HyperLogLog的近似基数,如果键不存在,那么返回 0。命令作用于多个键时,返回所有给定 HyperLogLog的并集的近似基数,这个近似基数是通过将所有给定 HyperLogLog合并至一个临时HyperLogLog来计算得出的。

PFCOUNT address


 

3、PFMERGE命令:将多个 HyperLogLog 合并(merge)为一个 HyperLogLog 合并后的 HyperLogLog的基数接近于所有输入HyperLogLog的可见集合(observed set)的并集。合并得出的 HyperLogLog 会被储存在 destkey键里面,如果该键并不存在,那么命令在执行之前,会先为该键创建一个空的 HyperLogLog

 PFADD ip_address "202.120.111.146"

 PFADD ip_address "202.192.047.188""202.196.255.196"

 PFADD ip_address "202.198.159.156""202.046.255.125"

 PFADD ip_address "202.065.159.243""202.046.255.125"

 PFMERGE mergekey address ip_address

 PFCOUNT mergekey


 

 

                --以上为《Redis教程(七) HyperLogLog类型》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

                                                                                                                                                                                      ——厚积薄发(yuanxw)


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:159619次
    • 积分:2514
    • 等级:
    • 排名:第15450名
    • 原创:87篇
    • 转载:1篇
    • 译文:0篇
    • 评论:33条
    最新评论