我正在創建一個Web服務,通常從遠程網頁中提取數據。在獲取這些數據之後,我有一個簡單的多維信息數組可供使用。在我的服務器上拼音過程相當重要,頁面加載需要一段時間。我正在考慮使用MySQL數據庫添加一個簡單的緩存系統,其中我爲每個遠程網頁創建一行,並從其中存儲的信息數組以JSON編碼的字符串形式存儲。這是一個足夠好的系統嗎?或者像每個網頁的文本文件是一個更好的主意?在MySQL數據庫中創建一個PHP緩存系統?
回答
既然你刮多個網頁,並且你想你的數據將被永久緩存,你有幾種選擇 - 最好的這將是使用memcache或數據庫,如MySQL。使用文本文件不是一個好主意,因爲您必須序列化/反序列化數據,並從文件系統讀取數據。查詢數據庫或memcache的效率要高出許多倍。
既然你可能正在尋找你的緩存有點持久,我會建議去與MySQL。您只需創建一個具有自動遞增主鍵的表,該分析的JSON對象中的每個元素都有一列。 (請注意,MySQL目前不支持數組,爲了模擬它們,您需要使用關係表,或者序列化數組數據並將其提供給文本字段,前者是首選)。
每次抓取頁面時,都會運行UPDATE
語句來更新數據庫中單個頁面的信息。如果您指定唯一索引來標識您的頁面(URL /等),您將獲得最佳查找性能。
數據持久性是爲什麼我跳過了memcache或類似的東西。關於查詢緩存頁面的問題是:可以簡單地查詢頁面的URL,還是應該執行類似於URL的md5散列查詢操作? – 2010-05-28 02:09:17
使用頁面的URL進行查詢就可以了(因爲通常可以用作唯一標識符)。只要確保在數據庫表中的該字段上添加一個唯一索引,因爲它本質上可以用作主鍵。 – Kenaniah 2010-05-28 06:32:22
我不傾向於有特別大的APC配置,最大64 - 128MB。 Memcache可以達到幾千兆字節或更多(如果運行多個實例,則會更多)。兩者都是暫時的 - 重啓Apache或Memcache(後者的可能性較小或經常會稍微減少)將丟失數據
這取決於您希望多長時間處理數據以生成緩存,以及該緩存可能需要多長時間纔能有用。如果在重新抓取頁面之前好幾個星期--MySQL是一個完全合適的後臺存儲。
潛在的pther選項,取決於緩存的項數&數據的大小,正如您所建議的那樣,是基於文件的緩存,SQlite或其他系統。
- 1. 如何用PHP和Mysql創建動態緩存系統?
- 2. Eclipselink緩存問題(一個數據庫用於兩個系統)
- 3. 爲緩存系統選擇數據庫
- 4. 裝入系統間緩存數據庫
- 5. 在另一個系統上重新創建數據庫模式?
- 6. 在JavaScript中創建一個簡單的庫存系統
- 7. 創建多個數據庫到一個系統
- 8. 爲兩個系統創建一個或單獨的數據庫?
- 9. 如何在系統間緩存中創建唯一的GUID?
- 10. 如何使用MySQL數據庫在PHP中創建一個JSON arrray數據庫
- 11. 用PHP創建多個MySQL數據庫
- 12. 在Php中訪問MySQL數據庫中創建的數據庫
- 13. MySQL操作系統緩存
- 14. 創建一個PHP結帳系統
- 15. 哪個Django緩存系統更快:文件系統還是數據庫?
- 16. 在java中爲xpages構建一個緩存查找系統
- 17. 創建一個從MySQL數據庫
- 18. 如何創建一個MySQL數據庫
- 19. PHP,MYSQL創建博客評論系統
- 20. 創建折扣代碼系統(MySQL/php)
- 21. 創建一個用戶聊天系統 - (PHP,MySQL,AJAX?)
- 22. 我在wordpress數據庫中創建了一個新表(分頁系統)
- 23. 繪製EER模型來創建存儲數據庫系統
- 24. 在MySql中爲每個客戶端創建一個數據庫
- 25. 創建數據庫,如果不存在php mysql
- 26. 爲php mysql查詢創建緩存
- 27. 在C#中創建登錄系統。 .mdf數據庫?
- 28. Rails:如何緩存系統表數據
- 29. 創建一個數據對象關係系統
- 30. PHP&MySql創建列表數據網格並保存在數據庫中
@Kenaniah - 如果你必須以「沒有冒犯性」作爲前言 - 也許你應該學會如何建設性地提供建議。這個孩子是17. – Matt 2010-05-27 22:20:48
@Matt - 是的,我會在一秒內發佈一個建設性的答案... – Kenaniah 2010-05-27 22:27:28