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

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

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

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

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

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

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

时间相关的变量适合存 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 自己定义字段来统计

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