V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jecvay
V2EX  ›  数据库

数据库问题求指教!

  •  
  •   jecvay · 2015-01-10 17:17:45 +08:00 · 939 次点击
    这是一个创建于 3402 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在高并发的情况下,
    如何使用Mysql来统计一个页面的点击量?

    希望能讲简单一点, 因为题主只会简单的sql语句, 不知道orm什么的;

    其次, 如果用Mangodb这类nosql数据库实现, 又应该如何实现? 谢谢!

    11 条回复    2015-01-11 11:33:03 +08:00
    geeklian
        1
    geeklian  
       2015-01-10 17:34:46 +08:00   ❤️ 1
    高并发不应该把点击量扔到memcache或redis里么,然后隔一定时间,往mysql写一次。
    lincanbin
        2
    lincanbin  
       2015-01-10 18:19:53 +08:00 via Android
    往 Memcached 里存,每次自增1,当缓存里的统计值达到100000时,执行一次数据库update,然后缓存置零,一次一个update的话I/O吃不消
    soulteary
        3
    soulteary  
       2015-01-10 18:23:29 +08:00
    如果你的内容数据量有限(万以内),不妨直接使用redis做存储,每次访问的时候,redis incr就好了。
    jecvay
        4
    jecvay  
    OP
       2015-01-10 19:06:16 +08:00
    @soulteary redis 不用考虑多人同时访问, 同时对这个键值 读取/写入 导致的错误问题吗? 就是说他自带锁一类的东西吗?
    RemRain
        5
    RemRain  
       2015-01-10 19:10:51 +08:00
    redis 是单线程的,不用加锁
    jecvay
        6
    jecvay  
    OP
       2015-01-10 19:14:36 +08:00
    @RemRain 谢啦!
    soulteary
        7
    soulteary  
       2015-01-10 19:17:25 +08:00
    @jecvay redis没有锁,如果实在不放心,那么可以尝试使用发布订阅方式推阅读数量+1,
    建议在安装完毕redis后,试一试```redis-benchmark ```,私以为,达不到读写的极限,妄谈锁...(使用速度跟不上的情况下,怎么触发写冲突呢)
    incompatible
        8
    incompatible  
       2015-01-10 20:01:37 +08:00
    @soulteary 冲突来自并发,与使用速度并无必然联系
    比如一个web应用,平时可能没人用,但是突然某一时刻两个浏览器同时发请求过来,就会造成并发。redis的incr操作是原子性的,无需担忧并发的问题。
    soulteary
        9
    soulteary  
       2015-01-10 20:05:24 +08:00
    @incompatible 谢指点。提到原子,不由想到原子锁...去翻下好了
    poxzlm
        10
    poxzlm  
       2015-01-10 22:36:53 +08:00 via Android
    你可以用redis实现一个简单的锁 是某一个set方法 就是若该schema不存在 则设置 若存在 则直接返回 因此你可以认为 设置成功表示进入锁 删除schema则表示释放锁。
    cxclmm
        11
    cxclmm  
       2015-01-11 11:33:03 +08:00
    楼主头像不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2548 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:02 · PVG 21:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.