redis不常用数据结构-去重计数/统计

1) 基数统计(非精确去重统计) HyperLogLog, 统计一下数字

1
for ((i=0; i<200; i++)) { echo $i;   echo "pfadd goodhyperloglog $i" | redis-cli; } ; echo "pfcount goodhyperloglog" | redis-cli

在 Redis 里面,每个 HyperLogLog 键最坏情况下只需要花费 12k bytes ,就可以计算接近 2^64 个不同元素的基数
参考:redis#hyperloglog

2)Bitmaps 不是一个真实的数据类型,只是在String类型上定义的一系列的位操作。string是二进制安全的,最大长度512M,能存储2^32个bit位。参考redis#bitmap

1
for ((i=0; i<200; i++)) { echo $i;   echo "setbit bitkey $i 1" | redis-cli; } ; echo "bitcount bitkey" | redis-cli

这两个数据类型都可以用来做去重的统计,一个非精确快速 hyperloglog (单个计数器时间复杂度 O(1)),另外一个精确 bitcount 时间复杂度o(n)

发表评论

邮箱地址不会被公开。 必填项已用*标注