通過計數器它可以是綜合瀏覽量,下載量,票數等基本上,不是非常'關鍵'的數據。PHP - Redis/Memcachedb/Mongodb或其他持久存儲來存儲計數器
什麼是最好的方式來存儲這些信息? Mysql不是一個好的選擇。你們用什麼?
通過計數器它可以是綜合瀏覽量,下載量,票數等基本上,不是非常'關鍵'的數據。PHP - Redis/Memcachedb/Mongodb或其他持久存儲來存儲計數器
什麼是最好的方式來存儲這些信息? Mysql不是一個好的選擇。你們用什麼?
我想我會用Redis的去,因爲:
20世紀90年代着名的查看計數器使用簡單的文件來存儲數字。如果你只需要存儲一個數字,任何事情都足夠好。
如果您得到任何有意義的流量,寫入磁盤上的文件時會出現併發問題。除非你使用文件鎖定,但是你會冒着鎖爭用的風險。像memcached這樣的項目存在是有原因的。 – 2010-01-10 02:43:24
但是,如果您只是將它用於簡單(低流量)的站點,則可以工作,並且易於實施 – Alfred 2010-01-13 19:01:09
鎖定爭用並不困難。 while(!get_lock()|| count> 10000){sleep(0.001); count ++}; fread()或fwrite(); remove_lock();'這樣簡單的事情可以很容易地處理每秒數以萬計的請求......假設您選擇的操作系統在文件系統操作上很快。 – 2012-09-07 22:57:17
我會說APC或memcached是不錯的選擇。
沒有持久性? – stesch 2010-01-10 03:09:38
+1。 Redis也具有可比性,並且建立在持久性之上。 – 2010-01-10 03:21:06
帶有upserts的MongoDB非常適合這個。
如果你存儲的東西,如:
{ "url" : "www.example.com", "pageviews" : 0 }
可以原子方式增加瀏覽量真的很快在原子操作$ INC:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})
如果使用upserts,你不必在更新之前檢查文檔是否存在。例如,如果你說:
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})
與網址www.example.com文檔將如果它不存在,或者如果它存在創建(設置爲1瀏覽量),瀏覽量會遞增。這意味着您不必擔心預先填充集合。
傳下來我會說redis。我正在做一些相反的事情,並且我正以每分鐘20美元的512MB VPS每分鐘推送30k個命令。 :) – 2010-01-18 05:56:57
我們嘗試使用redis作爲計數器系統。 Redis的主要數據存儲區是RAM,而我們的數據集太大而無法實現。東京暴君更像東京暴虐 - 不必將整個數據集保存在RAM中 - 可能會是更好的選擇。 – 2010-03-25 02:19:36
一個簡單的計數器不能保存在RAM中? Twitter將幾乎所有活動推文存儲在內存中。如果你想要表現,我認爲你應該爲一個內存模塊支付一點錢。在你旁邊可以得到一些廉價的ram演出。 – Alfred 2010-03-25 17:28:11