请教大家一个计数器的问题,想了 2 周了,目前没有完美的方案

2018-05-20 20:51:04 +08:00
 mistergo

我们公司大概有几千个 App,每个 App 在每次在手机上启动时,都会向服务器上报当前设备的 deviceID 和 AppID。目前,服务端这边,有两个需求:

  1. 想要知道任意一个 App,一共有多少台设备安装过;
  2. 对于任意 App,拿到任意 deviceID 后,要快速知道之前有没有安装过。

目前的几个思路:

  1. 把所有设备 ID 存储到数据库,但是这样数据库行数会非常多,后期查询起来可能会慢。
  2. 如果用 redis 之类的,担心存不下
  3. 如果用 elasticsearch,聚合+统计的操作,也会比较慢

请教各位大神,有没有其他好方案?

3140 次点击
所在节点    问与答
23 条回复
mistergo
2018-05-21 12:15:02 +08:00
谢谢大家。
在问这个问题之前,我们采用的 es,但是 es 的问题是查询起来非常慢,每次大概需要几十秒。因为我们水平有限,效率一直没有优化上去。
现在我们买了 redis 的 32G 的内存服务器,用 SET 数据类型去存储。SET 类型天然支持数量统计、查询是否存在等功能,满足我们需求,目前来看效果很好,查询速度很快。如果后期空间不够,公司也愿意花钱加内存。
kchum
2018-05-21 12:17:40 +08:00
估计是网盟或者统计类 为开发者服务的公司...
LevineChen
2018-05-21 12:18:53 +08:00
第一条可以用 hyperloglog 大概百分之 0.8 的误差

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456348

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX