Redis 布隆過濾器

說一個很常見的場景吧,我們在新聞網(wǎng)站、視頻網(wǎng)站瀏覽新聞視頻的時候,它們是怎么給我們推薦那些我們沒看過的內容的呢?
可能你會想到:服務器端儲存每個用戶的觀看記錄,在去除掉每個用戶已觀看的內容,但是這種方法會給服務器端很大的壓力,當用戶量特別大的時候,每個人看過的內容又很多的時候,效率會大大降低,甚至拖垮服務。
如果每個用戶的觀看內容是存到了關系型數(shù)據(jù)庫,那每次查詢的時候都要順便判斷是否有重復觀看的數(shù)據(jù),說實話,關系型數(shù)據(jù)庫不適合這種場景。
再假如,把觀看數(shù)據(jù)存到了緩存中,但是這些數(shù)據(jù)是不會消失的,會隨著時間的推移而變得越來越多,時間長了緩存也一樣撐不住。
這個時候就需要專業(yè)的工具去解決這種場景,我們的布隆過濾器就可以登場了!

接下來我們來詳細看一下這個布隆過濾器到底是個什么東西。

布隆過濾器是什么?

我們知道在Redis中Set結構是可以用來判斷集合中是否存在某一個value的,簡單的理解,布隆過濾器就是一個不怎么精確的Set結構,但是有時候他又不是那么不精確,我們可以通過參數(shù)的設置,讓他變得足夠精確。
當布隆過濾器說一個值存在時,這個值有可能不存在;但是當它說一個值不存在時,那這個值確實不存在。
我們再來看上面我說的那個場景,是不是就可以用布隆過濾器過濾掉那些已經(jīng)觀看過的內容了呢,雖然可能有誤判,但是也在合理接受的范圍內。

布隆過濾器怎么使用?

布隆過濾器的指令其實非常少,只有添加判斷是否存在兩個,bf.addbf.exists。
其中bf.add用來添加元素,bf.exists用來判斷元素是否存在,用法和Set結構的sadd
sismember差不多。這兩個命令一次只能操作一個元素,當然還有批量操作的指令bf.maddbf.mexists
本來下面該是命令的演示了,但是時間不太充足了,今天先到這,我們明天繼續(xù)!謝謝大家觀看!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1、布隆過濾器是什么,一定要用嗎? (1)黑客流量攻擊:故意訪問不存在的數(shù)據(jù),導致程序不斷訪問DB數(shù)據(jù)庫的數(shù)據(jù)(2...
    家hao閱讀 520評論 0 0
  • 之前,小馬在聊緩存擊穿和穿透的文中有介紹過防止緩存穿透其中的一種方式是使用布隆過濾器,那什么是布隆過濾器呢?今天就...
    小馬過河R閱讀 546評論 0 5
  • 使用 HyperLogLog 數(shù)據(jù)結構來進行估數(shù),它非常有價值,可以解決很多精確度不高的統(tǒng)計需求。 但是如果我們想...
    要不再等等閱讀 1,121評論 0 1
  • 1、什么是布隆過濾器 可以把布隆過濾器理解為一個不怎么精確的set結構,當你使用它的contains方法判斷某個對...
    代碼的搬運工閱讀 2,356評論 0 1
  • 轉載于詳細解析Redis中的布隆過濾器及其應用 - 萬貓學社 - 博客園[https://www.cnblogs....
    愛健身的兔子閱讀 456評論 0 1

友情鏈接更多精彩內容