Redis教程(七) HyperLogLog类型
来源:互联网 发布:免id下载软件 编辑:程序博客网 时间:2024/05/13 18:44
Redis教程(七) HyperLogLog类型
1 Redis数据类型
Redis的键值可以支持数据类型:字符串,列表,散表,集合,有序集合、HyperLogLog,通过选用不同的数据结构,用户可以使用Redis解决各式各样的问题。
1.1 HyperLogLog类型
Redis在2.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类型
1 Redis数据类型
Redis的键值可以支持数据类型:字符串,列表,散表,集合,有序集合、HyperLogLog,通过选用不同的数据结构,用户可以使用Redis解决各式各样的问题。
1.1 HyperLogLog类型
Redis在2.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类型
- Redis教程(七) HyperLogLog类型
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis-HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis学习7--HyperLogLog
- Redis命令-HyperLogLog
- Redis 入门之 HyperLogLog
- Redis的HyperLogLog
- redis数据结构HyperLogLog
- redis数据结构HyperLogLog
- Redis in Python:HyperLogLog
- Ripple支付原理
- html白屏解决与优化方案
- ubuntu 16.04 the control process exited with error code服务启动失败
- 有趣的逻辑面试题
- zeppelin 初使用
- Redis教程(七) HyperLogLog类型
- sybase 动态sql
- Spring Boot 运行原理
- EL表达式中截取字符串的长度
- Unity 梯子生成算法
- 三.Spring配置文件详解随笔
- 购物神器:一款自动抓取淘宝商品内部优惠券的工具 http://www.bcyhq.cn/search.html
- it基础设施原理
- android 常用Adapter复制就用