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的web框架日志,想将一个请求的所有日志上都绑定一个请求ID,由于最初框架的搭建没有解耦好,所以很难在日志中输出请求ID。于是想到了能否用协程ID来记录一个对应的请求ID,然后进行获取。
Python调用WPS把文档转换PDF,并把PDF转图片,首先需要安装WPS,然后利用pypiwin32把文档转化成PDF,再利用fitz、PyMuPD把PDF转化成图片
XML实体注入漏洞
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
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问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。