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的更多相关文章

  1. Redis命令

    redis的常用命令主要分为两个方面.一个是键值相关命令.一个是服务器相关命令(redis-cli进入终端) 1.键值相关命令 keys * 取出当前所有的key exists name 查看n是否有 ...

  2. 浅谈redis的HyperLogLog与布隆过滤器

    首先,HyperLogLog与布隆过滤器都是针对大数据统计存储应用场景下的知名算法. HyperLogLog是在大数据的情况下关于数据基数的空间复杂度优化实现,布隆过滤器是在大数据情况下关于检索一个元 ...

  3. redis命令参考和redis文档中文翻译版

    找到了一份redis的中文翻译文档,觉得适合学习和查阅.这份文档翻译的真的很良心啊,他是<Redis 设计与实现>一书的作者黄健宏翻译的. 地址:http://redisdoc.com/i ...

  4. redis命令手册

    Redis 键(key) 命令 命令 描述 Redis DEL 命令 该命令用于在 key 存在是删除 key. Redis Dump 命令 序列化给定 key ,并返回被序列化的值. Redis E ...

  5. Redis记录-Redis命令

    Redis命令是用于在Redis服务器上执行一些操作.要在Redis服务器上运行命令,需要一个Redis客户端.Redis客户端在Redis包中有提供,这个包在我们前面的安装教程中就有安装过了. 语法 ...

  6. Redis 学习之路 (010) - redis命令手册

    Redis 键(key) 命令 命令 描述 Redis DEL 命令 该命令用于在 key 存在是删除 key. Redis Dump 命令 序列化给定 key ,并返回被序列化的值. Redis E ...

  7. python 操作redis之——HyperLogLog (八)

    #coding:utf8 import redis # python 操作redis之——HyperLogLog r =redis.Redis(host=") # 1.Pfadd 命令将所有 ...

  8. Redis 中 HyperLogLog 的使用场景

    什么是基数估算 HyperLogLog 是一种基数估算算法.所谓基数估算,就是估算在一批数据中,不重复元素的个数有多少. 从数学上来说,基数估计这个问题的详细描述是:对于一个数据流 {x1,x2,.. ...

  9. Redis命令大全(超详细)

    一:序 其实本文的命令大家都可以去官网学习,但是我出这篇文章只是以更直观的方式来解读官网上的命令,让大家一眼可以看得懂,看的明白: 注意:我全文使用的Redis版本为 6.2.x 版本,低版本可能有些 ...

随机推荐

  1. php手机号码验证正则表达式

    移动:134.135.136.137.138.139.150.151.152.157.158.159.182.183.184.187.188.178(4G).147(上网卡): 联通:130.131. ...

  2. Email非正则表达式的判断

    判断一个邮件是否合法,我们除了可以使用正则表达四以外还可以利用,Email地址的规律进行判断,那么一个合法的Email有哪些要求昵?具体如下: 必须有@与. @必须在第一个.之前 @与.不能连在一起 ...

  3. Cracking the Coding Interview 6.2

    There is an 8*8 chess board in which two diagnolly opposite corners have been cut off. You are given ...

  4. 向量叉乘 Cross product

    参考:Wiki Cross product

  5. Mysql外键的变种 三种关系

    一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以 ...

  6. vmware笔试题目

    http://discuss.acmcoder.com/topic/58db8e2ebb0f44ba0e94e670 上面是完整的题目,下面一下我自己的想法. http://discuss.acmco ...

  7. 关于PHP中的SESSION技术

    Session是服务器端技术,服务器在运行时可以为每一个用户创建一个其独享的session文件,所以用户在访问服务器web资源时,可以把各自的数据放在各自的session中,当用于再去访问该服务器中其 ...

  8. JavaScript中的数组创建

    JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元 ...

  9. 读《Android电视机(机顶盒)初次开发的一些经验分享》后的笔记

    原文: http://blog.csdn.net/tanghongchang123/article/details/52982818 一.基本命令: 1.adb connect [ip] 2. adb ...

  10. ssh 免密码登入远程服务器

    生成ssh密钥,将公钥上传至远程服务器~/.ssh目录下面(没有的话就建一个): ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub root@yourserver.com ...