在高并发的情况下,
如何使用Mysql来统计一个页面的点击量?
希望能讲简单一点, 因为题主只会简单的sql语句, 不知道orm什么的;
其次, 如果用Mangodb这类nosql数据库实现, 又应该如何实现? 谢谢!
在高并发的情况下,
如何使用Mysql来统计一个页面的点击量?
希望能讲简单一点, 因为题主只会简单的sql语句, 不知道orm什么的;
其次, 如果用Mangodb这类nosql数据库实现, 又应该如何实现? 谢谢!
|
1
高并发不应该把点击量扔到memcache或redis里么,然后隔一定时间,往mysql写一次。
|
|
lincanbinJan 10, 2015 via Android
2
往 Memcached 里存,每次自增1,当缓存里的统计值达到100000时,执行一次数据库update,然后缓存置零,一次一个update的话I/O吃不消
|
|
soultearyJan 10, 2015
3
如果你的内容数据量有限(万以内),不妨直接使用redis做存储,每次访问的时候,redis incr就好了。
|
|
RemRainJan 10, 2015
5
redis 是单线程的,不用加锁
|
|
soultearyJan 10, 2015
7
@jecvay redis没有锁,如果实在不放心,那么可以尝试使用发布订阅方式推阅读数量+1,
建议在安装完毕redis后,试一试```redis-benchmark ```,私以为,达不到读写的极限,妄谈锁...(使用速度跟不上的情况下,怎么触发写冲突呢) |
|
incompatibleJan 10, 2015
8
@soulteary 冲突来自并发,与使用速度并无必然联系
比如一个web应用,平时可能没人用,但是突然某一时刻两个浏览器同时发请求过来,就会造成并发。redis的incr操作是原子性的,无需担忧并发的问题。 |
|
soultearyJan 10, 2015
9
@incompatible 谢指点。提到原子,不由想到原子锁...去翻下好了
|
|
poxzlmJan 10, 2015 via Android
10
你可以用redis实现一个简单的锁 是某一个set方法 就是若该schema不存在 则设置 若存在 则直接返回 因此你可以认为 设置成功表示进入锁 删除schema则表示释放锁。
|
|
cxclmmJan 11, 2015
11
楼主头像不错
|