一步一步学习Redis——HyperLogLog的相关命令

news/2025/2/25 10:39:17

文章目录:

1.开篇

2.Redis HyperLogLog的相关命令

2.1 PFADD命令

语法

返回值

2.2 PFCOUNT命令

语法

返回值

2.3 PFMERGE命令

语法

返回值


1.开篇

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

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

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8},基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。


2.Redis HyperLogLog的相关命令

序号命令及描述
1PFADD key element [element...]
添加指定元素到 HyperLogLog 中。
2PFCOUNT key [key...]
返回给定 HyperLogLog 的基数估算值。
3PFMERGE destkey sourcekey [sourcekey...]
将多个 HyperLogLog 合并为一个 HyperLogLog

2.1 PFADD命令

Redis Pfadd 命令将所有元素参数添加到 HyperLogLog 数据结构中。

语法

redis 127.0.0.1:6379> PFADD key element [element ...]

返回值

整型,如果至少有个元素被添加返回 1, 否则返回 0。

2.2 PFCOUNT命令

Redis Pfcount 命令返回给定 HyperLogLog 的基数估算值。

语法

redis 127.0.0.1:6379> PFCOUNT key [key ...]

返回值

整数,返回给定 HyperLogLog 的基数值,如果多个 HyperLogLog 则返回基数估值之和。 

2.3 PFMERGE命令

Redis PFMERGE 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。

语法

redis 127.0.0.1:6379> PFMERGE destkey sourcekey [sourcekey ...]

返回值

返回 OK。

 


http://www.niftyadmin.cn/n/712155.html

相关文章

labels用python 怎么用_Python wx.TR_EDIT_LABELS属性代码示例

# 需要导入模块: import wx [as 别名]# 或者: from wx import TR_EDIT_LABELS [as 别名]def __init__(self, parent, folder, filterNone, editableTrue):wx.Panel.__init__(self, parent, stylewx.TAB_TRAVERSAL)main_sizer wx.BoxSizer(wx.VERTICAL)self.Tree wx.TreeCtrl(…

重载new和delete运算符

内存管理运算符 new、new[]、delete 和 delete[] 也可以进行重载,其重载形式既可以是类的成员函数,也可以是全局函数。一般情况下,内建的内存管理运算符就够用了,只有在需要自己管理内存时才会重载。以成员函数的形式重载 new 运算…

工作vs.学�

近一两年来,我先后对[工作与学习]的复杂过程有过多次的头脑风暴,而且感觉在这方面略有所成(看这里和这里);当然既然仅仅是头脑风暴,所谓的所成也仅仅是一些粗糙的想法,一…

web前端学习(三十七)——JavaScript typeof、null、undefined及简单类型转换的相关设置

1.JS几个重要的操作符与变量值 1.1 typeof 可以使用 typeof 操作符来检测变量的数据类型。 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>JS简单学习</title></head><body><…

出现The folder is already a source folder

右键build path -> configure build path -> source &#xff0c;选择 src/main/java、src/test/java删除&#xff0c;然后再新建。

新增分类功能PHP,希望TP5新增MVC分层下的分类功能。

TP3.2.3现在好像不支持Controller任意级别分层吧&#xff1f;比如我把Home\Controller\UserAdminController.class.php移到Home\Controller\User\UserAdminController.class.php&#xff0c;命名空间由&#xff1a;namespace Home\Controller 改为&#xff1a;namespace Home\C…

python 比特输出_python技术面试题(一)

正文共&#xff1a; 2383字 5图 预计阅读时间&#xff1a; 6分钟每日分享If you change nothing, nothing will change如果你什么也不去改变&#xff0c;那么没什么会改变。小闫语录&#xff1a;想要一份好工作&#xff0c;那就好好学习扎实自己&#xff1b;想要气质&#xff0…

一步一步学习Redis——发布订阅功能

文章目录&#xff1a; 1.开篇 1.1 发布订阅功能的实现 2.Redis发布订阅的相关命令 2.1 SUBSCRIBE命令 语法 返回值 2.2 PUBLISH命令 语法 返回值 2.3 UNSUBSCRIBE命令 语法 返回值 2.4 PSUBSCRIBE命令 语法 返回值 2.5 PUBSUB命令 语法 返回值 2.6 PUNSUB…