HyperLogLog数据类型
简介 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
在 Redis 里面,每个HyperLogLog键只需要花费12KB内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog不能像集合那样,返回输入的各个元素。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5,跟集合一样,具有唯一性。 基数估计就是在误差(标准差小于1%)可接受的范围内,快速计算基数。所以在进行使用时需要权衡。
HLL类型的命令都使用PF开头,是致敬HLL数据结构的发明者Philippe Flajolet;
相关命令
PFADD、PFCOUNT、PFMERGE
操作
1、使用PFADD添加数据
127.0.0.1:6379> PFADD hll_1 zhang
(integer) 1
127.0.0.1:6379> PFADD hll_1 yang
(integer) 1
127.0.0.1:6379> PFADD hll_1 li
(integer) 1
127.0.0.1:6379> PFADD hll_1 zhang #添加相同数据返回0
(integer) 0
2、使用PFCOUNT命令获取数量
127.0.0.1:6379> PFCOUNT hll_1
(integer) 3
3、使用PFMERGE命令合并
#新增一个hll_2
127.0.0.1:6379> PFADD hll_2 zhang
(integer) 1
127.0.0.1:6379> PFADD hll_2 he
(integer) 1
127.0.0.1:6379> PFADD hll_2 liu
(integer) 1
#将hll_1、hll_2合并到hll_3中
127.0.0.1:6379> PFMERGE hll_3 hll_1 hll_2
OK
127.0.0.1:6379> PFCOUNT hll_3
(integer) 5
前一篇博客中已经说过Golang对Gzip的处理,其实这是我的服务器端的处理,那么当我们服务器返回Gzip压缩的字符串后,客户端如何进行解压呢?本文主要记录下JavaScript对Gzip进行压缩和解压处理。
在PHP中,对二维数组排序还是非常简单的,但是在Golang中对二位数据排序显的就稍显麻烦,但是我们还是可以通过结构体来进行排序,本文主要记录Golang如何通过结构体的多个字段来进行排序。
通过sudo命令,可以让普通用户在执行指定命令或程序上,拥有超级管理员的权限。并有针对性将不同的命令授予指定的普通用户,同时普通用户不需要知道root的密码就可以得到授权,授权的方式可以通过visudo配置管理。
《精忠报国》是歌手屠洪刚演唱的一首歌曲。由陈涛作词,张宏光作曲。收录在屠洪刚1999年发行的同名专辑《精忠报国》里。歌曲内容反应了南宋抗金名将岳飞的戎马一生,歌颂岳飞精忠报国的强烈爱国主义精神。该曲也是何中华、俞飞鸿等主演古龙武侠剧《三少爷的剑》的片尾曲。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题