我有20万视频,要统计每个视频的点播次数
如果每个用户点播时去更新数据库,这样数据库压力太大,而且速度慢
所以把视频点播数次放在缓存中,当这次点播时间超过上次点播一定时间时就去更新数据库。这样数据库的压力是不大,可带来另一个问题,就是统计次数的不确定,会带来延时,因为比如晚上没人点播,那最近的一次点播次数还在缓存中保存着。这样同样带来一个问题,如果这时发生比如IIS重启的话,数据都会丢失。
各位高手帮忙想想办法
后来想了下,可以设定缓存的过期时间,比如20分钟超时,在缓存移除事件中去更新统计数量,但同一时间可能会出现太多的过期,又带来压力的问题
各位出出主意

解决方案 »

  1.   

    你這個問題可以用寫服務器端的xml文件來解決
      

  2.   

    你這個問題可以用寫服務器端的xml文件來解決
    能否再详细说明一下,谢谢
      

  3.   

    我做过,不过也只有用SQL更新数据库,呵呵!有待高人!
      

  4.   

    呵呵,楼主可以用定时器来解决问题呀:protected void Application_Start(Object sender, EventArgs e)
    {
             System.Timers.Timer SrvTimer = new System.Timers.Timer();
    SrvTimer.Elapsed += new ElapsedEventHandler(SrvStart);
    SrvTimer.Interval = 180000;//1800000毫秒
    SrvTimer.Enabled = true;
    }public void SrvStart(Object sender, System.Timers.ElapsedEventArgs e)
    {
    //在这里放入更新统计的代码;
    //A.楼主可以用线程来解决压力问题 :
    //B.楼主可以用ADO.NET中的事务更新来更新数据库,安全无太大压力问题,HOHO
    }