百萬級營運經驗四:大流量如何儲存文章閱讀數

來源:互聯網
上載者:User

網站文章通常都會有個閱讀數,最簡單的方法就是每訪問一次就加一,這看起來很簡單,update一下就可以了。如果網站訪問量很大呢,每天有幾十萬次的訪問呢,一秒鐘就要update幾次伺服器,效率就很低了。而且,資料庫update的時候會鎖表,還會影響到讀操作,看來只能用緩衝了。

Memcached是會遺失資料的,不合適;Redis是記憶體型資料庫,可以持久化,就用它了。Redis啟動並執行時候,是把資料都儲存在記憶體中的,讀寫速度非常的快,而且可以設定持久化策略,一般幾分鐘儲存一次到硬碟就可以了,即使資料丟失,也只是幾分鐘的閱讀數而已,這種損失是可以接受的。還可以使用crontab做個任務,定時把閱讀數同步到資料庫,其它類似的計數也可以使用這種方式儲存。Redis的讀寫速度是非常快的,所以不用擔心在顯示列表的時候一個個去讀取閱讀數的效能問題。

如果要像QQ空間那樣,儲存哪些使用者訪問過該篇文章呢,這也很簡單,Redis有種資料類型叫集合(Sets),每次登入使用者訪問時,就把使用者ID添加到該檔案的集合裡就可以了,集合能自動去重,很方便。如果還需要根據訪問時間排序呢,比如最新訪問的使用者排在前面,用有序集合(Sorted Sets)就可以了,把目前時間作為有序集合的分數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.