码迷,mamicode.com
首页 > 其他好文 > 详细

Redis命令-HyperLogLog

时间:2015-06-24 21:03:41      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

HyperLogLog数据结构简介

    可以看http://www.cnblogs.com/ysuzhaixuefei/p/4052110.html  博客,介绍的相对比较清晰。

    HyperLogLog数据结构,可以接收多个参数输入,然后估算出元素的基数。

    ? 基数:集合中不同元素的数量。比如 {‘apple‘, ‘banana‘, ‘cherry‘, ‘banana‘, ‘apple‘} 的基数就是 3 。
    ? 估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合
理的范围之内。
    HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定
的、并且是很小的。
    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基
数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以
HyperLogLog 不能像集合那样,返回输入的各个元素。

    PFADD key [element ...]:将任意数量的元素添加到指定的HyperLogLog中去。相对会更新HyperLogLog内部,更改集合的基数。如果对应的HyperLogLog的基数发生变化则返回1,否则返回0。

    返回值:基数被修改返回1,否则返回0

  1. 127.0.0.1:6379> PFADD databases Redis Mongodb MySQL
  2. (integer) 1
  3. 127.0.0.1:6379> PFCOUNT databases
  4. (integer) 3
  5. 127.0.0.1:6379> PFADD databases Redis
  6. (integer) 0
  7. 127.0.0.1:6379> PFADD databases RedisTest
  8. (integer) 1
  9. 127.0.0.1:6379> PFCOUNT databases
  10. (integer) 4

    PFCOUNT key[key ... ]:PFCOUNT作用于单个key的时候,返回该key的基数。当PFCOUNT命令作用于多个key时,返回并集的近似数。

    返回值:给定hyperLogLog的基数。

    PFMERGE destkey sourcekey[sorcekey ...]:将多个HyperLogLog合并为一个HyperLogLog,合并后 的HyperLogLog的基数接近于所有输入的可见集合的并集。合并得出的hyperLogLog会被存储到destkey中去。

    返回值:成功返回ok。

  1. 127.0.0.1:6379> PFADD nosql Redis MongoDB Memcache
  2. (integer) 1
  3. 127.0.0.1:6379> PFADD rdbms mysql mssql oracle
  4. (integer) 1

  1. 127.0.0.1:6379> PFMERGE databases nosql rdbms
  2. OK
  3. 127.0.0.1:6379> PFCOUNT databases
  4. (integer) 9

Redis命令-HyperLogLog

标签:

原文地址:http://blog.csdn.net/mergades/article/details/46626365

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!