Rails 关于点击数 Redis 缓存的最佳实践问题

jonnoj · 2018年10月25日 · 最后由 heroyct 回复于 2018年10月26日 · 706 次阅读

参考ruby-china的源码,看到点击数是用redis+redis-objects实现的。

但没有看到持久化到MySQL/PostgreSQL的代码,如果我需要后台管理做统计(比如: 每个文章每天的点击量,每天点击量最多的100篇文章等等),需一个策略来把点击数更新到MySQL中。

目前能想到的是在更新 Redis的点击数的策略:

  • 检查点击数,比如10的倍数则写入一次到MySQL
  • 每个文章同时记录一个最后更新时间到redis,更新点击数的同时检查时间超过指定值则写入MySQL

大家有没有更好的最佳实践?

共收到 7 条回复

时间相关的变量适合存time series db,比如influxdb

2楼 已删除

也许你可以不要只是把点击数当成文章的一个字段,这样信息就丢失了 你可以把每个点击事件都入库,from_ip,article_id,click_time之类的都记下 再根据统计维度的需求,每天汇总

Laotree 回复

谢谢,这也是一个思路,这样做也可以用上队列服务,在加入队列的同时,用redis累计计数器。

jonnoj 回复

最大的好处,是有数据沉淀,你以后可以统计用户的地区,阅读时段等等,dashboard看起来又酷炫,还能吹一波“是大数据公司”😆

你的需求是需要记录每一次点击,才能统计出来

如果没那个实力存储和维护这么多点击数据,你可以用 Google 分析之类的三方工具

huacnlee 回复

谢谢,目前是用的google分析,但只是用的基本的功能,我研究一下怎样利用Google分析来实现这样的需求。

google analytics或者
td-agent + google bigquery自己定义字段来统计

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册