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 hl1 zset1 zset2 zset3,返回:1
PFCOUNThl1,返回值:3
PFMERGE hl1 hl2
phpredis操做HyperLogLog
phpredis中沒有直接用來執行HyperLogLog相關命令的函數,可是phpredis提供了能夠直接執行redis命令的方法:rawCommand(),該方法能夠執行任意的redis原生命令redis
$redis->rawCommand("set", "foo", "bar");返回值;true