zoukankan      html  css  js  c++  java
  • 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()方法
    有罪是符合人性的,但长期坚持不改就是魔鬼。
  • 相关阅读:
    php exec() error…
    已达到计算机的连接数最大值,无法再同此远程计算机连接
    网站URL路径的中文问题[中文路径编码]【转】
    获取用户客户端的IP的方法
    flex如何处理java通过BlazeDS传递来的对象
    $_SERVER["所有这里的东西"]
    鼠标悬浮时显示对话框
    android设置 textview的背景
    在代码中设置字体颜色
    jdk 和sdk环境变量配置
  • 原文地址:https://www.cnblogs.com/yu-yuan/p/9996100.html
Copyright © 2011-2022 走看看