我们小作坊是做资讯类的服务,技术栈是 java
现在有几个需求,主要就是针对每一条资讯,需要记录其访问,分享,收藏,评论数量。然后会有各种各样的数据展示。 4 项数据:访问数,分享数,收藏数,评论数
客户端查看某条资讯时显示这条资讯的各项数据。 机构能够展示总的数据,按年月日统计总数据,根据这四个字段的排序找出各项数据最高的几条资讯 总平台能够展示各个机构的上述数据以及总的汇总。
请问这种场景,应该大概使用什么方式来做 我们目前想到的,一个就是传统的数据库查询:建一个表有这四个字段和资讯 id,然后不停自增。。然后统计的时候就是各种极其复杂的 SQL。 另外一种就是用 flink,但是鉴于对 flink 不是很熟,只是感觉可以。 或者有什么其他比较适合的方案??
求大神支招
1
VisionKi 2019-09-05 11:09:29 +08:00
用 Redis 的 Hash 结构能做。
例如访问的时候,每访问一次,用 redis 的自增命令:HINCRBY [key] [field] 1,这里[key]是用资讯 ID,[field]是访问量的键。 然后其他操作类型也这么设置。每天凌晨取出昨天的每个资讯四个值,记录到表里,记录完了删除掉昨天的数据。 |
2
VisionKi 2019-09-05 11:12:22 +08:00
每个资讯对应 redis 中的结构类似:
key:资讯 ID field:访问量 value:1 field:分享数 value:1 field:收藏数 value:1 field:评论数 value:1 |
3
ma836323493 2019-09-05 12:52:32 +08:00 via Android
实时更新的放 redis, 非实时的埋点查日志
|