Filter Bloom adalah struktur data probabilistik yang hemat ruang dan dapat Anda gunakan untuk menguji apakah suatu elemen adalah anggota dari suatu set. Dengan jenis struktur ini, Anda dapat memiliki positif palsu. Misalnya, filter dapat menunjukkan bahwa suatu elemen ada dalam set, meskipun tidak ada. Namun, Anda tidak dapat memiliki negatif palsu. Jadi, jika Anda menambahkan elemen ke set, filter harus menunjukkan bahwa elemen tersebut ada dalam set.
Filter mencapai hal ini dengan menggunakan beberapa fungsi hash untuk memetakan elemen ke beberapa bit dalam array bit berukuran tetap. Untuk mengontrol probabilitas positif palsu, Anda dapat menyesuaikan jumlah bit dalam array dan jumlah fungsi hash yang digunakan.
Kasus penggunaan
Bagian ini menjelaskan kasus penggunaan berikut untuk menggunakan filter Bloom:
Menghapus duplikat iklan dan peristiwa: Jika Anda memiliki situs e-commerce, layanan streaming, jaringan iklan, atau platform pemasaran, filter Bloom dapat membantu Anda menentukan apakah pengguna melihat iklan, menerima email atau notifikasi promosi, atau membeli produk.
Anda dapat menggunakan filter Bloom untuk menyimpan semua produk yang dibeli pengguna.
- Jika produk tidak ada dalam filter, tampilkan iklan kepada pengguna dan tambahkan produk ke filter.
- Jika produk ada dalam filter, pengguna mungkin melihat iklan terkait dan membeli produk tersebut. Oleh karena itu, temukan iklan lain untuk ditampilkan kepada pengguna.
Mendeteksi penipuan: Anda dapat menggunakan filter Bloom untuk mendeteksi apakah kartu kredit ditandai sebagai dicuri. Untuk melakukannya, gunakan filter yang berisi kartu yang dilaporkan dicuri. Saat kartu digunakan, periksa apakah kartu tersebut muncul di filter.
- Jika kartu tidak ada dalam filter, kartu tersebut tidak ditandai sebagai dicuri.
- Jika kartu ada dalam filter, Anda dapat memeriksa kartu tersebut dengan database utama atau menolak pembelian.
Memfilter spam dan konten berbahaya: Anda dapat menggunakan filter Bloom untuk menyaring konten dari potensi ancaman, materi berbahaya, dan spam. Untuk melakukannya, buat filter yang berisi URL berbahaya, alamat email spam, dan nomor telepon spam. Saat pengguna memasukkan URL, atau menerima email atau teks, periksa apakah informasi ini muncul di filter.
- Jika URL, email, atau teks tidak ada dalam filter, izinkan pengguna mengakses situs yang diwakili oleh URL, atau menerima email atau teks.
- Jika URL, email, atau teks ada dalam filter, tolak akses pengguna ke situs terkait atau cegah pengguna menerima email atau teks.
Mendeteksi nama pengguna duplikat: Anda dapat menggunakan filter Bloom untuk menentukan apakah nama pengguna baru atau sudah ada. Untuk melakukannya, gunakan filter untuk melacak setiap nama pengguna yang mendaftar ke situs e-commerce atau layanan streaming Anda. Saat pengguna baru mencoba mendaftar dengan nama penggunanya, periksa apakah nama pengguna tersebut muncul di filter.
- Jika nama pengguna tidak ada dalam filter, buat akun dan tambahkan nama pengguna ke filter.
- Jika nama pengguna ada dalam filter, tolak nama pengguna tersebut.
Untuk mengetahui informasi selengkapnya tentang kasus penggunaan ini, lihat Kasus penggunaan umum untuk filter Bloom.
Ketersediaan
Jika Anda membuat instance Memorystore untuk Valkey, versi 8.0 dan yang lebih baru, jenis data Bloom versi 1.0 dan perintah terkait akan tersedia secara otomatis. Jenis data ini kompatibel dengan API dengan sintaksis perintah filter Bloom dari library klien Valkey berikut:
Jenis filter Bloom
Anda dapat memiliki jenis filter Bloom berikut:
- Penskalaan: Jenis filter ini tidak memiliki kapasitas tetap sehingga filter dapat bertambah. Jika filter mencapai kapasitasnya dan Anda menambahkan item baru yang unik ke filter, filter akan melakukan penskalaan dan subfilter baru akan dibuat. Subfilter ini memiliki kapasitas yang lebih besar daripada filter.
- Non-penskalaan: Jenis filter ini memiliki kapasitas tetap sehingga ada batasan jumlah item yang dapat Anda tambahkan ke filter. Jika filter mencapai kapasitasnya dan Anda mencoba menambahkan item baru yang unik ke filter, Anda akan menerima error.
Untuk mengetahui informasi selengkapnya tentang perbedaan antara jenis filter Bloom ini, lihat Filter Bloom penskalaan dan non-penskalaan.
Properti filter Bloom
Filter Bloom memiliki properti berikut:
- Kapasitas: Jumlah item yang dapat ditampung filter Bloom sebelum filter melakukan penskalaan (untuk filter penskalaan) atau menolak penambahan item tambahan (untuk filter non-penskalaan).
- Rasio positif palsu: Rasio yang mengontrol probabilitas operasi untuk filter Bloom yang menghasilkan positif palsu. Misalnya, operasi yang Anda gunakan untuk memeriksa apakah suatu elemen ada dalam filter menunjukkan bahwa elemen tersebut ada dalam filter, meskipun tidak ada.
- Ekspansi: Properti ini terkait dengan filter Bloom penskalaan. Properti ini mengontrol pertumbuhan kapasitas keseluruhan saat filter melakukan penskalaan karena filter mencapai kapasitasnya.
- Penskalaan atau non-penskalaan: Apakah filter Bloom adalah filter penskalaan atau non-penskalaan filter.
Untuk mengetahui informasi selengkapnya tentang properti filter Bloom, lihat Properti Bloom.
Objek filter Bloom
Objek filter Bloom dapat menggunakan memori maksimum 128 MB. Untuk memeriksa jumlah memori yang digunakan filter Bloom, gunakan perintah BF.INFO key SIZE, dengan key adalah nama kunci untuk filter dan
SIZE adalah jumlah byte yang digunakan filter.
Kategori Bloom
Untuk mengelola akses ke perintah Bloom dan data, gunakan @bloom
kategori. Selain kategori ini, kategori berikut menggunakan perintah Bloom: @read, @write, dan @fast.
Tabel berikut menunjukkan apakah Anda dapat memetakan perintah Bloom ke kategori @read, @write, @fast, dan @bloom.
| Perintah Bloom | @bloom |
@read |
@write |
@fast |
|---|---|---|---|---|
BF.ADD |
Y | N | Y | Y |
BF.CARD |
Y | Y | N | Y |
BF.EXISTS |
Y | Y | N | Y |
BF.INFO |
Y | Y | N | Y |
BF.INSERT |
Y | N | Y | Y |
BF.MADD |
Y | N | Y | Y |
BF.MEXISTS |
Y | Y | N | Y |
BF.RESERVE |
Y | Y | N | Y |
Perintah Bloom
Bagian ini mencantumkan dan menjelaskan perintah Bloom yang dapat Anda gunakan untuk melakukan operasi Bloom pada jenis data Bloom.
| Perintah | Deskripsi |
|---|---|
BF.ADD |
Menambahkan satu item ke filter Bloom. Jika filter tidak ada, maka perintah akan membuatnya. |
BF.CARD |
Menampilkan kardinalitas filter Bloom. |
BF.EXISTS |
Menentukan apakah filter Bloom berisi item yang Anda tentukan. |
BF.INFO |
Menampilkan informasi penggunaan dan properti filter Bloom. |
BF.INSERT |
Membuat filter Bloom dengan 0 item atau lebih atau menambahkan item ke filter yang ada filter. |
BF.MADD |
Menambahkan satu item atau lebih ke filter Bloom. Jika filter tidak ada, perintah akan membuatnya. |
BF.MEXISTS |
Menentukan apakah filter Bloom berisi satu item atau lebih. |
BF.RESERVE |
Membuat filter Bloom kosong dengan properti yang Anda tentukan. |
Memeriksa filter Bloom
Anda dapat memeriksa informasi berikut tentang filter Bloom:
- Penggunaan memori: periksa apakah filter mencapai batas penggunaan memori. Untuk memeriksa
jumlah memori yang digunakan filter, gunakan
BF.INFOperintah. - Kapasitas: periksa apakah filter adalah filter penskalaan. Jika ya, lakukan penskalaan filter sehingga mencapai kapasitasnya, lalu lakukan penskalaan.
Untuk mengetahui informasi selengkapnya tentang cara memeriksa penggunaan memori dan kapasitas untuk filter Bloom, lihat Menangani filter Bloom besar.