Redis教程(七) HyperLogLog类型

原创 2016年08月31日 15:51:35

 

 

Redis教程() HyperLogLog类型


1 Redis数据类型

Redis的键值可以支持数据类型:字符串,列表,散表,集合,有序集合、HyperLogLog,通过选用不同的数据结构,用户可以使用Redis解决各式各样的问题。


1.1 HyperLogLog类型

      Redis2.8.9版本添加了 HyperLogLog结构。

     基数:集合中不同元素的数量。比如 {'java', 'C#', 'ruby', 'C#', 'java'}的基数就是 3

     估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围之内。

      Redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。在 Redis里面,每个 HyperLogLog键只需要花费 12 KB内存,就可以计算接近 2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog不能像集合那样,返回输入的各个元素。

 

1、PFADD命令:将任意数量的元素添加到指定的HyperLogLog里面。如果 HyperLogLog估计的近似基数(approximated cardinality)在命令执行之后出现了变化,那么命令返回 1否则返回 0如果命令执行时给定的键不存在,那么程序将先创建一个空的 HyperLogLog结构,然后再执行命令。

     PFADD  address"/user/recharge"

     PFADD  address"/user/findpassword"

         PFADD  address"/user/rechargeSuccess" "/user/rechargefail"

         PFADD address "/user/zijinliushui" "/user/myinvitation""/user/myrewards"


 

2、PFCOUNT命令:命令作用于单个键时,返回储存在给定键的 HyperLogLog的近似基数,如果键不存在,那么返回 0。命令作用于多个键时,返回所有给定 HyperLogLog的并集的近似基数,这个近似基数是通过将所有给定 HyperLogLog合并至一个临时HyperLogLog来计算得出的。

PFCOUNT address


 

3、PFMERGE命令:将多个 HyperLogLog 合并(merge)为一个 HyperLogLog 合并后的 HyperLogLog的基数接近于所有输入HyperLogLog的可见集合(observed set)的并集。合并得出的 HyperLogLog 会被储存在 destkey键里面,如果该键并不存在,那么命令在执行之前,会先为该键创建一个空的 HyperLogLog

 PFADD ip_address "202.120.111.146"

 PFADD ip_address "202.192.047.188""202.196.255.196"

 PFADD ip_address "202.198.159.156""202.046.255.125"

 PFADD ip_address "202.065.159.243""202.046.255.125"

 PFMERGE mergekey address ip_address

 PFCOUNT mergekey


 

 

                --以上为《Redis教程(七) HyperLogLog类型》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

                                                                                                                                                                                      ——厚积薄发(yuanxw)


版权声明:本文为博主原创文章,未经博主允许不得转载。

HyperLogLog: 解读Cardinality Estimation算法(第一部分:基本概念)

前几天看了bloom filter,最近又不小心看了有文章提到hyperloglog,于是做了一点search http://blog.csdn.net/heiyeshuwu/article...

[转]高压缩空间占用的 Hyper LogLog 算法

Big Data Counting: How To Count A Billion Distinct Objects Using Only 1.5KThis is a guest post by Ma...

Redis源码分析(二十六)--- slowLog和hyperloglog

今天学习的是是2个log的文件,2个文件的实现功能都超出我原本理解的意思。开始时我以为就是记录不同的类型的日志,后来才慢慢的明白了额,slowLog记录的是超时的查询记录,而hyperloglog其实...

(八)redis常用数据类型 HyperLoglog

1.HyperLoglog简介HyperLoglog是redis新支持的两种类型中的另外一种(上一种是位图类型Bitmaps)。主要适用场景是海量数据的计算。特点是速度快。占用空间小。同样是用于计算,...

Redis 学习笔记(十一)基数统计(HyperLogLog)

Redis 学习笔记(十一)基数统计(HyperLogLog)1. 介绍HyperLogLog命令是redis在2.8版本中加入的,Redis中HyperLogLog是用来做基数统计的。HyperLo...
  • men_wen
  • men_wen
  • 2017年04月11日 10:24
  • 357

Redis系列学习笔记7 HyperLogLog

HyperLogLog使用常量空间估算大量元素的基数。问题记录网站每天获得的独立 IP 数量。使用集合来储存每个访客的 IP ,通过集合性质(集合中的每个元素都各不相同)来得到多个独立 IP ,然后通...

Redis学习记录之命令HyperLogLog(十四)

说明:HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。 在 Redis 里面,每...

redis基础之HyperLogLog数据结构

一、概述: Redis 在 2.8.9 版本添加了HyperLogLog 结构。 RedisHyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体...

redis数据结构HyperLogLog

如果我们要实现记录网站每天访问的独立IP数量这样的一个功能集合实现:使用集合来储存每个访客的 IP ,通过集合性质(集合中的每个元素都各不相同)来得到多个独立 IP ,然后通过调用 SCARD 命令来...

Redis源码剖析--基数统计hyperloglog

Redis中hyperloglog是用来做基数统计的,其优点是:在输入元素的数量或者体积非常非常大的时候,计算基数所需的空间总是固定的,并且是很小的。在Redis里面,每个Hyperloglog键只需...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Redis教程(七) HyperLogLog类型
举报原因:
原因补充:

(最多只允许输入30个字)