Saya menggunakan MySQL untuk beratur dan menentukan sama ada untuk mengakses Memandangkan ciri-ciri kegigihan Redis tidak begitu baik, dan saya tidak terfikir untuk menggunakan Redis atau apa-apa lagi pada masa itu, tiada masalah untuk menggunakan MySQL untuk. pada masa ini.
Kaedah khusus adalah untuk mengindeks nilai md5 URL secara unik Setiap pertanyaan adalah pantas dan struktur jadual adalah mudah.
Baris gilir menggunakan bentuk carian jadual dan SQL adalah seperti berikut (status khusus mewakili beberapa status yang ditentukan sendiri):
pilih * daripada t_down_task di mana status = 0 pesanan mengikut had id 1;
Padamkan tugasan yang telah selesai dengan kerap
Memori 4G boleh membuka BloomFilter yang sangat besar Setiap URL hanya memerlukan beberapa bit, tanpa mengira panjang URL. BloomFilter mempunyai kadar ralat tertentu (seperti seperseribu atau satu peratus, bergantung pada konfigurasi), yang akan menyebabkan beberapa halaman web terlepas, tetapi tidak akan dirangkak berulang kali.
Jika memori 4G tidak mencukupi untuk membuka BloomFilter, penulis perlu mempertimbangkan cara menyimpan halaman web yang dirangkak.
Apabila jumlah data tidak terlalu besar, storan cincang md5 dalam storan KV agak boleh dipercayai Jika jumlah indeks adalah besar, ia mungkin tidak mencukupi, jadi beberapa algoritma khas dengan pemampatan ruang mesti digunakan, seperti. Penapis bloom yang disebutkan di atas
Sesetengah orang juga telah melaksanakan storan algoritma ini menggunakan protokol Memcache, http://code.google.com/p/mc-bloom-fil...
Jangan gunakan redis untuk melakukan ini, hanya gunakan sistem fail secara langsung
URL yang dikumpul ditukar kepada rentetan perenambelasan melalui MD5, dan kemudian setiap 4 aksara digunakan sebagai direktori, dan 4 aksara terakhir digunakan sebagai nama fail Kandungan fail boleh kosong
Untuk menentukan sama ada URL telah dikumpulkan, MD5 terus URL semasa, jana laluan fail mengikut peraturan di atas dan tentukan terus sama ada laluan fail itu wujud.
Penapis mekar teratas. Ia boleh digunakan seperti ini: gunakan leveldb untuk menyimpan URL, dan kemudian gunakan bloomfilter untuk menyekat kebanyakan URL yang tiada dalam pustaka semasa membuat pertanyaan. Ini sepatutnya hampir sama.
Berapa banyak URL yang lz perlu merangkak? Jika terdapat banyak URL, seperti ratusan juta, dan jika anda mempunyai Hadoop, anda juga boleh menggunakan Hadoop untuk menyahduplikasi URL baharu dan URL lama MapReduce sangat pantas
Saya menggunakan MySQL untuk beratur dan menentukan sama ada untuk mengakses Memandangkan ciri-ciri kegigihan Redis tidak begitu baik, dan saya tidak terfikir untuk menggunakan Redis atau apa-apa lagi pada masa itu, tiada masalah untuk menggunakan MySQL untuk. pada masa ini.
Kaedah khusus adalah untuk mengindeks nilai md5 URL secara unik Setiap pertanyaan adalah pantas dan struktur jadual adalah mudah.
Baris gilir menggunakan bentuk carian jadual dan SQL adalah seperti berikut (status khusus mewakili beberapa status yang ditentukan sendiri):
pilih * daripada t_down_task di mana status = 0 pesanan mengikut had id 1;
Padamkan tugasan yang telah selesai dengan kerap
http://ms.wikipedia.org/wiki/Bloom_fi...
Memori 4G boleh membuka BloomFilter yang sangat besar Setiap URL hanya memerlukan beberapa bit, tanpa mengira panjang URL. BloomFilter mempunyai kadar ralat tertentu (seperti seperseribu atau satu peratus, bergantung pada konfigurasi), yang akan menyebabkan beberapa halaman web terlepas, tetapi tidak akan dirangkak berulang kali.
Jika memori 4G tidak mencukupi untuk membuka BloomFilter, penulis perlu mempertimbangkan cara menyimpan halaman web yang dirangkak.
Apabila jumlah data tidak terlalu besar, storan cincang md5 dalam storan KV agak boleh dipercayai Jika jumlah indeks adalah besar, ia mungkin tidak mencukupi, jadi beberapa algoritma khas dengan pemampatan ruang mesti digunakan, seperti. Penapis bloom yang disebutkan di atas
Sesetengah orang juga telah melaksanakan storan algoritma ini menggunakan protokol Memcache, http://code.google.com/p/mc-bloom-fil...
Sesetengah pangkalan data k/v yang berterusan boleh dipertimbangkan, dan saya mengesyorkan menggunakan leveldb.
Jangan gunakan redis untuk melakukan ini, hanya gunakan sistem fail secara langsung
URL yang dikumpul ditukar kepada rentetan perenambelasan melalui MD5, dan kemudian setiap 4 aksara digunakan sebagai direktori, dan 4 aksara terakhir digunakan sebagai nama fail Kandungan fail boleh kosong
Untuk menentukan sama ada URL telah dikumpulkan, MD5 terus URL semasa, jana laluan fail mengikut peraturan di atas dan tentukan terus sama ada laluan fail itu wujud.
Penapis mekar teratas. Ia boleh digunakan seperti ini: gunakan leveldb untuk menyimpan URL, dan kemudian gunakan bloomfilter untuk menyekat kebanyakan URL yang tiada dalam pustaka semasa membuat pertanyaan. Ini sepatutnya hampir sama.
Berapa banyak URL yang lz perlu merangkak? Jika terdapat banyak URL, seperti ratusan juta, dan jika anda mempunyai Hadoop, anda juga boleh menggunakan Hadoop untuk menyahduplikasi URL baharu dan URL lama MapReduce sangat pantas