鍍金池/ 教程/ 大數(shù)據(jù)/ Redis HyperLogLog
C#連接Redis
Redis基準
Redis數(shù)據(jù)類型
Windows下安裝Redis
Redis事務
Redis腳本
Redis配置
Redis客戶端連接
Redis字符串
Redis管道
PHP連接Redis
Redis快速入門
Redis命令
Redis教程
Redis哈希
Redis環(huán)境安裝配置
Redis分區(qū)
Redis備份
Redis發(fā)送訂閱
Redis連接
Redis服務器
Redis集合
Redis鍵命令
Redis HyperLogLog
Java連接Redis
Redis列表

Redis HyperLogLog

Redis HyperLogLog是一種使用隨機化的算法,以少量內存提供集合中唯一元素數(shù)量的近似值。

HyperLogLog 可以接受多個元素作為輸入,并給出輸入元素的基數(shù)估算值:

  • 基數(shù):集合中不同元素的數(shù)量。比如 {‘a(chǎn)pple’, ‘banana’, ‘cherry’, ‘banana’, ‘a(chǎn)pple’} 的基數(shù)就是 3 。
  • 估算值:算法給出的基數(shù)并不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的范圍之內。

HyperLogLog 的優(yōu)點是,即使輸入元素的數(shù)量或者體積非常非常大,計算基數(shù)所需的空間總是固定的、并且是很小的。

在 Redis 里面,每個 HyperLogLog 鍵只需要花費 12 KB 內存,就可以計算接近 2^64 個不同元素的基數(shù)。這和計算基數(shù)時,元素越多耗費內存就越多的集合形成鮮明對比。

但是,因為 HyperLogLog 只會根據(jù)輸入元素來計算基數(shù),而不會儲存輸入元素本身,所以
HyperLogLog 不能像集合那樣,返回輸入的各個元素。

示例

redis 127.0.0.1:6379> PFADD mykey "redis"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD mykey "mongodb"  
1) (integer) 1  
redis 127.0.0.1:6379> PFADD mykey "mysql"  
1) (integer) 1  
redis 127.0.0.1:6379> PFCOUNT mykey  
(integer) 3

Redis集排序集合命令

下表列出了 HyperLogLog 相關的一些基本命令。

序號 命令 說明
1 PFADD key element [element …] 將指定的元素添加到指定的HyperLogLog 中。
2 PFCOUNT key [key …] 返回給定 HyperLogLog 的基數(shù)估算值。
3 PFMERGE destkey sourcekey [sourcekey …] 將多個 HyperLogLog 合并為一個 HyperLogLog

上一篇:Redis快速入門下一篇:Redis腳本