1
manhere 2016-06-19 12:37:43 +08:00
“多个用户访问同一个帖子浏览量算作一次”,不是很理解这句,既然如此,还统计啥?
|
2
lyragosa 2016-06-19 12:38:57 +08:00
多个用户访问同一个帖子浏览量算作一次???
|
3
SlipStupig 2016-06-19 12:46:12 +08:00
“多个用户访问同一个帖子浏览量算作一次” 这个就是发一个帖子有人访问就为 1 ,没人访问就为 0 ,时间日期都不用考虑了,没意义
|
4
Ouyangan 2016-06-19 12:48:48 +08:00
数据库没你想的那么脆弱吧
|
5
qiayue 2016-06-19 13:03:32 +08:00
估计楼主写错了,是一个用户在不同的时间浏览同一个帖子都只算作一次
如果是这样的话,你就需要在某个地方存储,某个人是否浏览过某个帖子的数据 然后这又是需要长期存储的数据,所以直接放数据库里就行了,没必要放 redis |
6
liuhaotian 2016-06-19 13:06:46 +08:00
访问量多少?数据库多少数据量?
1000w 以下不用考虑数据库 |
7
airyland 2016-06-19 13:19:40 +08:00
直接上 influxdb 吧,自从解决 timezone 问题后很好用了。
|
8
odirus 2016-06-19 13:50:16 +08:00
提供另外一个思路:
假设用户通过 nginx 访问你的 web 服务,你阔以修改 nginx 日志记录设置,记录用户的 cookie 信息(只要能够表示用户唯一身份即可),添加到 access_log 信息中。 如果你需要及时计算,可以使用 Spark streaming ,如果你不需要及时计算,可以定时一段时间计算一次日志内的信息,利用 Spark SQL ,可以像 MySQL 一样起送自如。 计算后的日志就可以存储到文件 or 数据库。 以上方式的好处是不影响用户体验,只对 web 服务器日志进行分析,只要保留用户日志,随时都可以重新计算。 |
9
odirus 2016-06-19 13:51:23 +08:00
o , PHP 节点,如果会一点 Python 的话就可以轻松使用 spark SQL 了。
|
10
hp3325 2016-06-19 14:29:19 +08:00 via Android
建张用户帖子表,用户 ID 和帖子 ID 作为唯一索引,更新帖子点击数前往这个表插记录,能插进去才更新点击数。
为防止数据爆掉,加个条件,帖子最后回复时间超过 60 天就不算点击数,同时维护脚本加入定期清理用户帖子表。 除非你的每月活跃用户有过十万,每个用户读取帖子数过千,否则没必要用非数据库的解决方案 |
11
dphdjy 2016-06-19 14:32:43 +08:00 via Android
PV vs UV
低访问量分表就行 至于高并发情况下 内存计数器+定时持久化 Redis+MySQL 就是相对常用的组合 也可以自己建其他内存缓存方案 |
12
lookas2001 OP 谢大家回答。
访问量基本为 0 。。。 先用 MySQL 做一个用户-帖子表来记录就好。。 等用户量大了再换吧。。 总之,谢大家回答 |
13
lslqtz 2016-06-19 17:13:39 +08:00
@lookas2001 我觉得,可以改为每天计一次。
否则你的 MySQL 压力会崩的,用 Memcache 或者 Redis , 86400 秒。 |
14
qcloud 2016-06-19 17:17:25 +08:00
piwik
|
15
SlipStupig 2016-06-19 22:02:14 +08:00
@lslqtz 没多大压力一个 uid ,对应一个或多个帖子的访问 ID ,说实话压力真心不大,如果你有一百万用户和 50 个帖子,这些用户每天一发消息全部上线,日 update 次数也就是 5 千万次,分布到一天下来每秒查询没多少流量,我之前用 mysql 做游戏数据库每天就 100 多个人玩大概日流量 100G 流量稳稳的没崩溃跑了三个月, mysql 真心没你想的那么脆弱
|
16
lxm 2016-06-20 12:28:58 +08:00
hset article:id userid time()
count = hlen(article:id) |
17
nandaye 2016-06-20 17:44:52 +08:00
数据库会爆掉。。电信、银行交易数据都是放在数据库的
|