

【redis进阶(2)】大数据量模糊计数
source link: https://segmentfault.com/a/1190000040611711
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【redis进阶(2)】大数据量模糊计数
HyperLogLog 提供不精确的去重计数方案,用于记录大数据量的计数(如,网站的uv),虽然不精确但是也不是非常不精确,标准误差是 0.81%。
HyperLogLog 提供了两个指令 pfadd 和 pfcount,根据字面意义很好理解,一个是增加计数,一个是获取计数。pfadd 用法和 set 集合的 sadd 是一样的,来一个用户 ID,就将用户 ID 塞进去就是。pfcount 和 scard 用法是一样的,直接获取计数值。
127.0.0.1:6379> pfadd codehole user1 user2 user3 (integer) 3 127.0.0.1:6379> pfcount codehole (integer) 3
接下来我们使用脚本,往里面灌更多的数据,看看它是否还可以继续精确下去,如果不能精确,差距有多大。
import redis client = redis.StrictRedis() for i in range(100000): client.pfadd("codehole", "user%d" % i) print 100000, client.pfcount("codehole")
> python pftest.py 100000 99723
pfmerge
HyperLogLog 除了上面的 pfadd 和 pfcount 之外,还提供了第三个指令 pfmerge,用于将多个 pf 计数值累加在一起形成一个新的 pf 值。
比如在网站中我们有两个内容差不多的页面,运营说需要这两个页面的数据进行合并。其中页面的 UV 访问量也需要合并,那这个时候 pfmerge 就可以派上用场了。
# 合并三个key到第一个key:test_uv 127.0.0.1:6379> PFMERGE test_uv test_uv2 test_uv3 OK 127.0.0.1:6379> pfcount test_uv 5
Recommend
-
111
大数据计数原理1+0=1这你都不会算(五)-51CTO.COM 大数据计数原理1+0=1这你都不会算(五) 作者:大蕉 2017-09-30 08:05:41
-
71
大数据计数原理1+0=1这你都不会算(九)No.64 Original 大蕉...
-
43
-
62
大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存。但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里面的数据就会丢失不见了。这样的...
-
7
本文作者为中国人民大学统计学院饶燕芳同学,由 COS 编辑部审核发表,略有修改。点击此处下载 / 阅读本文 PDF 版本 一、问题的引出 在数据分析和数...
-
7
V2EX › 程序员 百万级数据的模糊查询,求方案 enjoychen0318 · 1 天前 · 1371 次...
-
15
讲一讲加密数据如何进行模糊查询 2020-12-30 在上一篇讲一讲数据安全,如何有效预防脱库 中我们提到了加...
-
7
关于加密数据的模糊查询 精选 原创 知识浅谈 2022-09-27 09:08:33...
-
6
Redis模糊匹配删除key 精选 原创 我的二狗呢 2022-11-10 15:42:09...
-
16
V2EX › 程序员 MD5 编码后的数据,如何做模糊查询?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK