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(不重複元素個數)
命令介紹php

  • 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原生命令redis

  • rawCommand(parameters)
    • 說明:rawCommand方法是能夠執行任意redis命令的方法
    • 參數:parameters(須要執行的命令的參數)
    • 返回:和要執行的命令具備相同的返回值
    • 實例:$redis->rawCommand("set", "foo", "bar");返回值;true
    • 注意:phpredis>2.2.7才能使用rawCommand()方法
相關文章
相關標籤/搜索