Redis Bloom Filter 是一種基于布隆過濾器的數據結構,用于檢測一個元素是否在一個集合中
BF.RESERVE key_name size num_hash_functions
:預留一個名為 key_name
的布隆過濾器,大小為 size
(以字節為單位),使用 num_hash_functions
個哈希函數。例如:BF.RESERVE my_bloom_filter 1000000 3
這將創建一個名為 my_bloom_filter
的布隆過濾器,大小為 1000000 字節,使用 3 個哈希函數。
BF.ADD key_name item
:向名為 key_name
的布隆過濾器中添加一個元素 item
。例如:BF.ADD my_bloom_filter hello
BF.ADD my_bloom_filter world
這將向 my_bloom_filter
中添加兩個元素:hello
和 world
。
BF.EXISTS key_name item
:檢查名為 key_name
的布隆過濾器中是否存在元素 item
。如果存在,返回 1;否則返回 0。例如:BF.EXISTS my_bloom_filter hello
BF.EXISTS my_bloom_filter world
這將檢查 my_bloom_filter
中是否存在 hello
和 world
。如果存在,將返回 1;否則返回 0。
BF.DELETE key_name item
:從名為 key_name
的布隆過濾器中刪除一個元素 item
。例如:BF.DELETE my_bloom_filter hello
這將從 my_bloom_filter
中刪除 hello
元素。
BF.INFO key_name
:獲取名為 key_name
的布隆過濾器的統計信息。例如:BF.INFO my_bloom_filter
這將返回一個包含布隆過濾器信息的 JSON 對象,包括大小、哈希函數數量、元素數量、誤報率等。
請注意,布隆過濾器的誤報率與其大小和哈希函數數量有關。較大的過濾器具有較低的誤報率,但需要更多的內存。要找到合適的參數,可以使用 BF.RESERVE
命令并嘗試不同的值。