Jadual Kandungan
1. Pengenalan
2. Senario Aplikasi
2.1 Penembusan Cache
2.2 Tentukan sama ada data tertentu wujud dalam data besar
3. Masalah dengan HashMap
4. Fahami gambarajah prinsip kerja penapis Bloom
5 Menurut elemen pertanyaan penapis panjang kain
6. Bolehkah ia dipadamkan? Walau bagaimanapun, varian yang dipanggil penapis Counting Bloom boleh digunakan untuk menguji sama ada bilangan kiraan elemen benar-benar kurang daripada ambang tertentu dan ia menyokong pemadaman elemen. Prinsip dan pelaksanaan artikel Counting Bloom Filter ditulis dengan sangat terperinci dan anda boleh membacanya secara terperinci.
Jelas sekali, jika penapis Bloom terlalu kecil, semua bit tidak lama lagi akan menjadi 1, maka sebarang nilai boleh ditanya Semua akan kembali "mungkin wujud", yang mengalahkan tujuan penapisan. Apabila panjang penapis Bloom bertambah, kadar positif palsunya berkurangan.
Dalam contoh yang diberikan, anda telah melihat bahawa kami boleh menggunakan ini untuk memberi amaran kepada pengguna kerana memasukkan kata laluan yang lemah.
Rumah pangkalan data Redis Apakah formula algoritma untuk saiz penapis mekar Redis?

Apakah formula algoritma untuk saiz penapis mekar Redis?

May 31, 2023 pm 08:17 PM
redis

1. Pengenalan

Pelanggan: Adakah kunci ini wujud?

Pelayan: tidak wujud/tidak tahu

Penapis Bloom ialah struktur data probabilistik yang bijak, yang pada asasnya ialah struktur data. Ia menampilkan sisipan dan pertanyaan yang cekap. Tetapi apabila kita ingin menyemak sama ada kunci wujud dalam struktur tertentu, dengan menggunakan penapis Bloom, kita boleh mengetahui dengan cepat bahawa "kunci ini mesti tidak wujud atau mungkin wujud." Berbanding dengan struktur data tradisional seperti Senarai, Set dan Peta, ia lebih cekap dan mengambil sedikit ruang, tetapi hasil yang dipulangkan adalah berkemungkinan dan tidak tepat.

Penapis Bloom hanya digunakan untuk menguji keahlian dalam koleksi. Contoh penapis Bloom klasik adalah untuk meningkatkan kecekapan dengan mengurangkan carian cakera (atau rangkaian) yang mahal untuk kunci yang tidak wujud. Seperti yang dapat kita lihat, penapis Bloom boleh mencari kunci dalam masa tetap O(k), dengan k ialah bilangan fungsi cincang, dan ujian untuk ketiadaan kunci akan menjadi sangat pantas.

2. Senario Aplikasi

2.1 Penembusan Cache

Untuk meningkatkan kecekapan akses, kami akan meletakkan beberapa data dalam cache Redis. Apabila melakukan pertanyaan data, anda boleh mendapatkan data daripada cache terlebih dahulu tanpa membaca pangkalan data. Ini boleh meningkatkan prestasi dengan berkesan.
Apabila membuat pertanyaan data, anda mesti terlebih dahulu menentukan sama ada terdapat data dalam cache Jika terdapat data, dapatkan data terus daripada cache.
Tetapi jika tiada data, anda perlu mendapatkan data daripada pangkalan data dan memasukkannya ke dalam cache. Jika sebilangan besar akses gagal mencapai cache, ia akan memberi banyak tekanan pada pangkalan data, menyebabkan pangkalan data ranap. Menggunakan penapis Bloom, apabila mengakses cache yang tidak wujud, anda boleh kembali dengan cepat untuk mengelakkan cache atau ranap DB.

2.2 Tentukan sama ada data tertentu wujud dalam data besar

HBase menyimpan jumlah data yang sangat besar Untuk menentukan sama ada ROWKEYS atau lajur tertentu wujud, gunakan penapis Bloom Anda boleh cepat dapatkan sama ada data tertentu wujud. Tetapi terdapat kadar salah penilaian tertentu. Tetapi jika kunci tidak wujud, ia mesti tepat.

3. Masalah dengan HashMap

Untuk menentukan sama ada unsur tertentu wujud, kecekapan menggunakan HashMap adalah sangat tinggi. HashMap boleh mencapai kerumitan masa tetap O(1) dengan memetakan nilai ke Kunci HashMap.
Namun, jika jumlah data yang disimpan adalah sangat besar (contohnya: ratusan juta data), HashMap akan menggunakan jumlah memori yang sangat besar. Dan adalah mustahil untuk membaca sejumlah besar data ke dalam memori pada satu masa.

4. Fahami gambarajah prinsip kerja penapis Bloom

:

Apakah formula algoritma untuk saiz penapis mekar Redis?

Penapis Bloom ialah susunan bit atau vektor binari sedikit
Elemen dalam tatasusunan ini disimpan sama ada 0 atau 1
k fungsi cincang adalah bebas antara satu sama lain, dan hasil pengiraan setiap fungsi cincang ialah modulo panjang m tatasusunan, dan tetapkan bit yang sepadan kepada 1 (sel biru)
Kami menetapkan sel untuk setiap kekunci dengan cara ini, iaitu "Penapis Bloom"

Anggap itu kunci dimasukkan. Kami menggunakan fungsi cincangan k sebelumnya untuk mencari cincangan dan mendapatkan nilai k
untuk menentukan sama ada nilai k semuanya berwarna biru Jika satu bukan Biru, maka kunci itu mestilah tidak wujud
Jika kedua-duanya berwarna biru, maka kunci mungkin wujud (Penapis Bloom akan menyebabkan salah penilaian)
Kerana jika terdapat banyak objek input dan setnya agak kecil, ia akan Akibatnya, kebanyakan kedudukan dalam koleksi akan dicat biru. Kemudian apabila kunci tertentu ditandakan sebagai biru, kedudukan tertentu akan ditetapkan kepada biru Pada masa ini, ia akan tersilap percaya bahawa kunci itu berada dalam koleksi
Contoh:

Apakah formula algoritma untuk saiz penapis mekar Redis?

Apakah formula algoritma untuk saiz penapis mekar Redis?

6. Bolehkah ia dipadamkan? Walau bagaimanapun, varian yang dipanggil penapis Counting Bloom boleh digunakan untuk menguji sama ada bilangan kiraan elemen benar-benar kurang daripada ambang tertentu dan ia menyokong pemadaman elemen. Prinsip dan pelaksanaan artikel Counting Bloom Filter ditulis dengan sangat terperinci dan anda boleh membacanya secara terperinci.

7. Bagaimana untuk memilih bilangan fungsi cincang dan panjang penapis Bloom

Jelas sekali, jika penapis Bloom terlalu kecil, semua bit tidak lama lagi akan menjadi 1, maka sebarang nilai boleh ditanya Semua akan kembali "mungkin wujud", yang mengalahkan tujuan penapisan. Apabila panjang penapis Bloom bertambah, kadar positif palsunya berkurangan.

Selain itu, bilangan fungsi cincang juga perlu ditimbang Lebih banyak nombor, lebih cepat kedudukan bit penapis Bloom ditetapkan kepada 1, dan lebih rendah kecekapan penapis Bloom; terlalu sedikit Jika ya, kadar penggera palsu kami akan menjadi lebih tinggi.

Apakah formula algoritma untuk saiz penapis mekar Redis?Seperti yang dapat dilihat daripada rajah di atas, meningkatkan bilangan fungsi cincang k akan mengurangkan kadar ralat p.

Jangan risau, kami sebenarnya perlu mengesahkan nilai m dan k. Kemudian, jika kita menentukan toleransi kesalahan p dan bilangan elemen n, kita boleh mengira parameter ini menggunakan formula berikut: Untuk mengira kadar penggera palsu p, formulanya adalah seperti berikut: Berdasarkan perkara di atas, bagaimana untuk memilih k dan nilai m sesuai untuk perniagaan?

Formula:


Apakah formula algoritma untuk saiz penapis mekar Redis?k ialah bilangan fungsi cincang, m ialah panjang penapis Bloom, n ialah bilangan elemen yang dimasukkan dan p ialah kadar positif palsu .

Bagaimana untuk mendapatkan formula ini, saya telah menerbitkan artikel tentang Zhihu jika anda berminat, anda boleh membacanya Jika anda tidak berminat, ingat formula di atas.


Saya juga ingin menyebut satu lagi perkara penting di sini. Memandangkan satu-satunya tujuan menggunakan penapis Bloom adalah untuk mencari lebih cepat, kita tidak boleh menggunakan fungsi cincang perlahan, bukan? Fungsi cincang kriptografi (cth. Sha-1, MD5) bukanlah pilihan yang baik untuk penapis bloom kerana ia agak perlahan. Jadi, pilihan yang lebih baik daripada pelaksanaan fungsi cincang yang lebih pantas ialah murmur, pencincangan keluarga fnv, pencincangan Jenkins dan HashMix.

Lagi Senario Aplikasi

Dalam contoh yang diberikan, anda telah melihat bahawa kami boleh menggunakan ini untuk memberi amaran kepada pengguna kerana memasukkan kata laluan yang lemah.

Anda boleh menggunakan penapis bloom untuk menghalang pengguna daripada melawati tapak web berniat jahat.

Daripada menanyakan pangkalan data SQL untuk menyemak sama ada pengguna dengan e-mel tertentu wujud, anda boleh menggunakan penapis Bloom Bloom dahulu untuk melakukan semakan carian murah. Jika e-mel itu tidak wujud, bagus! Jika ia wujud, anda mungkin perlu membuat pertanyaan tambahan kepada pangkalan data. Anda juga boleh melakukan perkara yang sama untuk mencari "nama pengguna sudah diambil."
Anda boleh menyimpan penapis Bloom berdasarkan alamat IP pelawat tapak web anda untuk menyemak sama ada pengguna tapak web anda adalah "Pengguna Kembali" atau "Pengguna Baharu". Beberapa positif palsu daripada "pengguna yang kembali" tidak boleh menyakiti anda, bukan?
Anda juga boleh melakukan semakan ejaan dengan menjejaki perkataan kamus menggunakan penapis Bloom.

Atas ialah kandungan terperinci Apakah formula algoritma untuk saiz penapis mekar Redis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara Membina Mod Kluster Redis Cara Membina Mod Kluster Redis Apr 10, 2025 pm 10:15 PM

Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Cara membersihkan data redis Cara membersihkan data redis Apr 10, 2025 pm 10:06 PM

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.

Cara Membaca Gilir Redis Cara Membaca Gilir Redis Apr 10, 2025 pm 10:12 PM

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Cara menggunakan perintah redis Cara menggunakan perintah redis Apr 10, 2025 pm 08:45 PM

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Cara menggunakan kunci redis Cara menggunakan kunci redis Apr 10, 2025 pm 08:39 PM

Menggunakan REDIS untuk mengunci operasi memerlukan mendapatkan kunci melalui arahan SETNX, dan kemudian menggunakan perintah luput untuk menetapkan masa tamat tempoh. Langkah-langkah khusus adalah: (1) Gunakan arahan SETNX untuk cuba menetapkan pasangan nilai utama; (2) Gunakan perintah luput untuk menetapkan masa tamat tempoh untuk kunci; (3) Gunakan perintah DEL untuk memadam kunci apabila kunci tidak lagi diperlukan.

Cara membaca kod sumber redis Cara membaca kod sumber redis Apr 10, 2025 pm 08:27 PM

Cara terbaik untuk memahami kod sumber REDIS adalah dengan langkah demi langkah: Dapatkan akrab dengan asas -asas Redis. Pilih modul atau fungsi tertentu sebagai titik permulaan. Mulakan dengan titik masuk modul atau fungsi dan lihat baris kod mengikut baris. Lihat kod melalui rantaian panggilan fungsi. Berhati -hati dengan struktur data asas yang digunakan oleh REDIS. Kenal pasti algoritma yang digunakan oleh Redis.

Cara menggunakan baris arahan redis Cara menggunakan baris arahan redis Apr 10, 2025 pm 10:18 PM

Gunakan alat baris perintah redis (redis-cli) untuk mengurus dan mengendalikan redis melalui langkah-langkah berikut: Sambungkan ke pelayan, tentukan alamat dan port. Hantar arahan ke pelayan menggunakan nama arahan dan parameter. Gunakan arahan bantuan untuk melihat maklumat bantuan untuk arahan tertentu. Gunakan perintah berhenti untuk keluar dari alat baris arahan.

Cara menyelesaikan kehilangan data dengan redis Cara menyelesaikan kehilangan data dengan redis Apr 10, 2025 pm 08:24 PM

Kerugian data REDIS termasuk kegagalan memori, gangguan kuasa, kesilapan manusia, dan kegagalan perkakasan. Penyelesaiannya adalah: 1. 2. Salin ke beberapa pelayan untuk ketersediaan tinggi; 3. Ha dengan redis sentinel atau cluster redis; 4. Buat gambar untuk membuat sandaran data; 5. Melaksanakan amalan terbaik seperti kegigihan, replikasi, gambar, pemantauan, dan langkah -langkah keselamatan.

See all articles