redis之布隆過濾器

2022-06-06 08:03:10 字數 1049 閱讀 9616

布隆過濾器是什麼?

布隆過濾器可以理解為乙個不怎麼精確的 set 結構,當你使用它的 contains 方法判斷某個物件是否存在時,它可能會誤判。但是布隆過濾器也不是特別不精確,只要引數設定的合理,它的精確度可以控制的相對足夠精確,只會有小小的誤判概率

布隆過濾器基本使用

布隆過濾器有二個基本指令,bf.add 新增元素,bf.exists 查詢元素是否存在,如果想要一次新增多個,就需要用到 bf.madd 指令。同樣如果需要一次查詢多個元素是否存在,就需要用到 bf.mexists 指令。

127.0.0.1:6379> bf.add codehole user1

(integer) 1

127.0.0.1:6379> bf.add codehole user2

(integer) 1

127.0.0.1:6379> bf.add codehole user3

(integer) 1

127.0.0.1:6379> bf.exists codehole user1

(integer) 1

127.0.0.1:6379> bf.exists codehole user2

(integer) 1

127.0.0.1:6379> bf.exists codehole user3

(integer) 1

127.0.0.1:6379> bf.exists codehole user4

(integer) 0

127.0.0.1:6379> bf.madd codehole user4 user5 user6

1) (integer) 1

2) (integer) 1

3) (integer) 1

127.0.0.1:6379> bf.mexists codehole user4 user5 user6 user7

1) (integer) 1

2) (integer) 1

3) (integer) 1

4) (integer) 0

redis之布隆過濾器

參考 背景 布隆過濾器主要應用在redis快取穿透的場景中 大量查詢不存在的key,redis中不存在,就會將請求打到mysql之類的磁碟儲存裝置中,導致系統崩潰 快取穿透的解決方法 1.在redis中快取空值,就是將空的key也快取到redis中,但是會占用空間 2.使用布隆過濾器,將全部的有效資...

Redis 布隆過濾器

實現原理 對的資料肯定是對的,錯的資料不能保證是對的。解釋如下 之前新增到容器中的資料,再次進行判斷是不是在這裡面,因為來過,槽位肯定我為1,所以判斷是不會出現問題的。容器中不存在,判斷是不是在容器中,可能其他的資料通過hash函式執行後把槽位占用了,所以存在一定的誤差。不能保證一定沒問題。hash...

Redis 布隆過濾器

想知道某乙個值是不是已經在 hyperloglog 結構裡面了,它就無能為力了,它只提供了 pfadd 和 pfcount 方法,沒有提供 pfcontains 這種方法。講個使用場景,比如我們在使用新聞客戶端看新聞時,它會給我們不停地推薦新的內容,它每次推薦時要去重,去掉那些已經看過的內容。問題來...