阿里云优惠券领取

Redis HyperLogLog命令,phpredis如何执行HyperLogLog命令

  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(不重复元素个数)
命令介绍

  • PFADD(key element [element1 ....])
    • 说明:将所有元素参数添加到HyperLogLog中
    • 参数:key(HyperLogLog的名称),element(将要加入的元素)
    • 返回:整型,如果至少有一个元素加入返回1,否则返回0
    • 实例:PFADD hl1 zset1 zset2 zset3,返回:1
    • 注意:redis-server > 2.8.9
  • PFCOUNT(key key1 ...)
    • 说明:返回给定的HyperLogLog的基数估算值
    • 参数:key(HyperLogLog的名称)
    • 返回:整型,返回给定的HyperLogLog的基数值,如果有多个HyperLogLog,则返回所有基数估值之和
    • 实例:PFCOUNThl1,返回值:3
    • 注意:redis-server > 2.8.9
  • PFMERGE(dstKey srcKey1 srcKey2,..)
    • 说明:将给定的多个HyperLogLog合并成一个HyperLogLog,合并后的HyperLogLog的基数估值是对所有给定的HyperLogLog进行并集计算得出的
    • 参数:dstKey(目标HyperLogLog),srcKey(源HyperLogLog)
    • 返回:返回OK
    • 实例:PFMERGE hl1 hl2
    • 注意:redis-server > 2.8.9

phpredis操作HyperLogLog
  phpredis中没有直接用来执行HyperLogLog相关命令的函数,但是phpredis提供了可以直接执行redis命令的方法:rawCommand(),该方法可以执行任意的redis原生命令

  • rawCommand(parameters)
    • 说明:rawCommand方法是可以执行任意redis命令的方法
    • 参数:parameters(需要执行的命令的参数)
    • 返回:和要执行的命令具有相同的返回值
    • 实例:$redis->rawCommand("set", "foo", "bar");返回值;true
    • 注意:phpredis>2.2.7才能使用rawCommand()方法
posted @ 2018-11-21 16:52  StimmerLove  阅读(524)  评论(0编辑  收藏  举报
hello everybody!!!!!