今天,我和大家分享下redis在运维数据分析中的去重统计方式。为了避免混淆,本文中对于redis的数据结构做如下约定:
SET:saddkey member
ZSET:zaddkeyscoremember
HYPERLOGLOG:pfaddkeyelement
STRING:setbitkeyoffset value
名词约定:
维度:比如版本、操作系统类型、操作系统版本、运营商、设备型号、网络类型等
复合维度:由两个或多个维度交错产生的维度,比如某个版本下的某个设备型号。
去重统计在数据化运维的指标计算环节,并不是一个陌生的字眼,甚至可以说,在大部分的数据指标的中间计算过程中,最终会分为以下几种数据集:
最大,最小,稳定性,叠加,去重统计。
这5种指标前面4种在实时处理框架或者大部分nosql中使用相对较小的开销即可完成计算,基础指标计算的大部分计算瓶颈还是落在io上面,而导致io瓶颈的问题源自于数据维度的划分与聚合,特别是对于去重统计类型的数据,如果有一种需要实时显示的去重指标,维度的切分对于io上的开销简直是一种灾难。
例如,假定我们需要获取手机终端中某个应用版本中的某个设备型