mysql - php資料庫緩衝設計

來源:互聯網
上載者:User
比如要顯示一個類目下所有子項的瀏覽量總和 但不可能使用者訪問一次就統計一次 太耗費資源 請大神指點下 如何?隔一段時間自己才會再次統計

回複內容:

比如要顯示一個類目下所有子項的瀏覽量總和 但不可能使用者訪問一次就統計一次 太耗費資源 請大神指點下 如何?隔一段時間自己才會再次統計

$redis = new redis();$pv = "select pv from views where id={$id}";//第一次的pv值$num = 100;// 累計100更新資料庫$incrPv = $redis->incr('pv:'.$id);if ($incrPv % $num === 0) {    $sql = "update views set pv=pv+{$num} where id = {$id}";} else if ($incrPv == 1) {   $incrPv = $pv + 1;   $redis->set('pv:'.$id, $incrPv);}

寫個定時指令碼統計出老資料
統計瀏覽數量可以用redis做緩衝

即時統計寫到redis或其他nosql資料庫裡面,crontab定時計算並清空nosql
線上執行PHP代碼

很簡單,只要在你設定顯示對應類目下子項瀏覽量的地方設定緩衝就可以了。

比如我舉這樣一個例子:

// 這個方法是你說的統計一個父類下對應所有子類的瀏覽量的綜合,`$time`是設定的緩衝時間function getCategoryNum($categoryId, $time=3600){    // 根據父類id統計所有子類的瀏覽量}// 這個是每次訪問時統計到你資料庫或者緩衝的地方的方法。這個方法是不用設定緩衝的,因為每次都要做統計function getViewsNum(){    // 使用者訪問瀏覽量+1操作}

通過上面的getCategoryNum()方法設定了緩衝時間,在緩衝時間內是不會去請求資料庫的,只有時間到了才會去請求資料庫擷取最新的統計,這就是根絕你設定的時間來看的了。

如何設定緩衝你項目中應該有的吧!如果要去做定時任務,我覺得有點浪費了。當然我並不確定你具體的業務需求,一切以你的業務需求為準。希望對你有協助

如果說不打算用其他緩衝技術的話,可以使用mysql進行緩衝,緩衝結構大致為Key,Value,最後更新時間,如果超過這個時間的話就進行更新,需要注意的是寫入的時候需要考慮是否校正寫入版本的一致性

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.