我有一個900萬IP的列表,並且使用一組哈希表,我可以創建一個常量時間函數,如果某個特定IP位於該列表中,則返回該函數。我可以在PHP中執行嗎?如果是這樣,怎麼樣?有沒有辦法在內存中維護200MB不可變數據結構並從腳本訪問它?
2
A
回答
2
這個問題有意思的是方向的數量你可以走了。
我不確定緩存是否是您的最佳選擇,僅僅是因爲大量數據集以及相對較少的查詢數。這裏有一些想法。
1)Build a ram disk。鏈接你的mysql數據庫表以使用ramdisk分區。我從來沒有嘗試過,但嘗試一下會很有趣。
2)Linux通常有一個非常快的文件系統。構建一個將記錄分解成文件的結構化文件系統,並調用file_get_contents()或file_exists()。當然,這個解決方案需要你建立和維護文件系統,這也很有趣。 rsync可能會有助於保持活動文件系統的最新狀態。
例子:
/002/209/001/299.txt
<?
$file = $this->build_file_from_ip($_GET['ip']);
if(file_exists($file)) {
// Execute your code.
}
?>
2
我認爲把它扔到memcache中可能是你最好/最快的方法。
4
這對我來說聽起來像是一個理想的Bloom Filter應用程序。看看提供的鏈接可能會幫助您儘快完成它。
2
如果把文件讀入SQLite的將是一種選擇,你可以從索引中獲益從而加快查找?
否則memcached是一個選項,但我不知道如何檢查是否存在會如果你這樣做去與純PHP查找(寧慢我的猜測)
1
您已經嘗試了的NoSql解決像Redis?整個數據集在內存中進行管理。
這裏有一些benchmarks。
相關問題
- 1. 有沒有辦法從腳本訪問PythonAnywhere CPU餘額?
- 2. Pycharm:有沒有辦法去聲明內置的數據結構?
- 3. 有沒有辦法訪問CSV文件並動態編輯它?
- 4. 在MS SQL Server 2005中,有沒有辦法將數據庫的完整維護計劃導出爲SQL腳本?
- 5. WP7有沒有辦法從觸摸屏訪問RAW數據?
- 6. 有沒有辦法通過直接訪問來改變內存中的值?
- 7. 有沒有辦法在終端中維護兩個窗口?
- 8. 有沒有辦法保存Treeview的項目和數據,以便可以在線程中訪問它?
- 9. FileMaker:有沒有辦法在腳本中構建出口訂單?
- 10. 有沒有辦法解碼tf.Summary protobuf對象並在TensorFlow中訪問它的值?
- 11. 有沒有辦法在wsl中訪問Windows環境變量?
- 12. 有沒有辦法在LLVM中訪問環境變量
- 13. Golang:有沒有辦法在Go的組合模型中訪問「父」結構的方法中的「子」結構?
- 14. 有沒有辦法在mongo文檔中維護一個有序數組?
- 15. 有沒有辦法在HTML對象中存儲長HTML腳本
- 16. 有沒有辦法從html內容中提取有效的腳本並使用jQuery執行它?
- 17. 沒有辦法訪問Context.USAGE_STATS_SERVICE
- 18. 有沒有辦法在訪問中存儲時間戳?
- 19. Python:有沒有辦法從其他函數訪問變量而不使用'global'?
- 20. Flex有沒有辦法從DLL中訪問C++函數?
- 21. 隨機訪問正確的數據結構並沒有重複
- 22. 有沒有辦法在eclipse中維護一個文本(註釋)文件?
- 23. 有沒有辦法從powershell腳本運行可執行文件?
- 24. 有沒有辦法從異地使用可讀性腳本
- 25. 有沒有什麼辦法可以從MySQL執行PHP腳本?
- 26. 有沒有辦法保存HSQLDB數據?
- 27. 有沒有辦法改變Shopify中的網址結構?
- 28. 有沒有辦法將Knuth shuffle應用於Stack數據結構?
- 29. 有沒有辦法在Laravel中訪問PHP本機會話變量?
- 30. 有沒有辦法從變量中選擇數據庫?
你也可以去多服務器路由。基於IP,使用不同的數據庫連接(或API調用)。將數據分解到多個服務器會減少每個服務器的壓力,從而提高訪問速度。 – Dooltaz 2009-10-09 21:09:49
它似乎也可以將表格存儲到內存中。 http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html看看「Memory」或HEAP表類型。您可能可以嘗試使用「MyISAM」而不是此功能。 – Dooltaz 2009-10-09 21:13:50
有趣的是,你的兩個解決方案都可以鏈接在一起:)我的HD目前有600萬個inode,因此唯一的方法是創建更多inode的文件系統,我認爲這可以通過RAMDISK !然而,我想首先檢查元數據佔用多少,因爲具有100個字節的20M文件已經佔用2GB的RAM – konr 2009-10-09 21:59:39