大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Redis數據結構:位圖

Redis數據結構:位圖

更新時間:2022-11-09 09:35:41 來源:動力節點 瀏覽1016次

位圖是當需要將巨大域的布爾信息映射為緊湊表示時立即出現在您腦海中的數據結構。當內存空間非常寶貴時,它是一種非常流行的數據結構。Redis 作為內存數據結構服務器,提供對位操作操作的支持。

中的數據結構。當內存空間非常寶貴時,它是一種非常流行的數據結構:操作系統內核(內存頁、inode 等)、數字成像等。

Redis 作為內存數據結構服務器,提供對位操作操作的支持。但是, Redis 中的位圖沒有特殊的數據結構 。相反,基本 Redis 結構支持位級操作: 字符串。現在,Redis 字符串的最大長度為 512 MB。因此,Redis 可以映射為 Bitmap 的最大域是 2 32 (512 MB = 2 29 字節 = 2 32 位)。

Redis 中與位相關的操作有兩種:恒定時間 (O(1)),例如獲取/設置特定位的操作,以及基本上對一組位進行操作的 O(N) 操作。在這些情況下,N 是操作需要處理的位長度。讓我們看一些例子。

命令

#  SETBIT  key  offset  value :在'key'的偏移'offset'處存儲 位 值 'value  ' 。歐( 1 )    
# 返回 存儲在該偏移處的 原始 位 值 。   
127.0 . 0.1 : 6379 > 設置位 k  10  1
(整數) 0
#  GETBIT  key  offset :在'key'中獲取 'offset'的值 。歐( 1 )   
127.0 . 0.1 : 6379 > 獲取比特 k  10
(整數) 1
127.0 . 0.1 : 6379 > 獲取位 k  11
(整數) 0
127.0 . 0.1 : 6379 > 獲取位 k  0
(整數) 0
127.0 . 0.1 : 6379 > 設置位 k  9  1
(整數) 0
127.0 . 0.1 : 6379 > 設置位 k  8  1
(整數) 0
# 因為它仍然是一個通用的String , 所以這里是一個 get 。      
127.0 . 0.1 : 6379 > 得到 k
"\x00\xe0"
#  "\x00\xe0"  ->  "0000 0000 111"
#BITCOUNT  key [ start end ] :范圍內設置的位數。_  _ 歐( ? )       
# 重要:開始 和 結束 是 字節 而不是 位
127.0 . 0.1 : 6379 > 比特 數 k
(整數) 3
127.0 . 0.1 : 6379 > 設置 m  “喵”
好的
# 喵 ->  01101101  01100101  01101111  01110111 
127.0 . 0.1 : 6379 > 位數 m
(整數) 21
#  BITPOS  key  bit [ start ] [ end ] : key in range中1或0的第 一個位置 。歐( ? )        
127.0 . 0.1 : 6379 > 設置我的密鑰“\  xff  \xf0\x00”
好的
127.0 . 0.1 : 6379 >  BITPOS  mykey  0
(整數) 12

除了對鍵本身起作用的運算符外,BITOP 運算符還用于多個鍵之間的按位邏輯運算。

#  BITOP 操作 destkey  key [ key ...]. 歐( ? )
# 運算 可以 是  AND , OR , XOR 和 NOT
127.0 . 0.1 : 6379 > 設置 一個 “\xff\xff”
好的
127.0 . 0.1 : 6379 >  bitop 不是 nota  _
(整數) 2
127.0 . 0.1 : 6379 > 得到 通知
"\x00\x00"
127.0 . 0.1 : 6379 > 設置 b  "\x0f\x0f"
好的
127.0 . 0.1 : 6379 > 設置 c  "\xf0\xf0"
好的
127.0 . 0.1 : 6379 >  BITOP 或 orbc  b  c
(整數) 2
127.0 . 0.1 : 6379 > 獲得 orbc
"\xff\xff"
127.0 . 0.1 : 6379 >  BITOP  AND  andbc  b  c
(整數) 2
127.0 . 0.1 : 6379 > 得到 andbc
"\x00\x00"
127.0 . 0.1 : 6379 >  BITOP  XOR  xorbc  b  c
(整數) 2
127.0 . 0.1 : 6379 > 得到 xorbc
"\xff\xff"

內件

由于位圖操作沒有自己的數據結構,因此沒有特殊的數據結構可以描述。Redis 字符串本身是作為二進制安全字符串實現的。Redis 字符串數據結構內部稱為簡單動態字符串(SDS)。它本質上是一個帶有一些額外簿記信息的原生 char []。

位圖函數的實現在文件 bitops.c中。

PS 鑒于位操作算法對關鍵操作系統和圖形功能的重要性,大多數架構都為此類操作提供了特殊指令。閱讀各種有趣的計算機算術算法的好地方是永恒的經典 Hacker's Delight。

應用

這個 流行的 GetSpool 博客 是使用位圖對大型數據集進行實時分析的一個很好的例子。它也是位圖經典用例的一個示例:將極大域的布爾信息存儲到(相對)較小的空間中,同時保持良好的性能。

尺寸通常是非常大的位圖的一個問題,因為對其最有用的操作是 O(N)。為了避免使用大鍵,Redis 文檔 建議 將大鍵拆分為多個較小的鍵。在密鑰變大之前,BITCOUNT 性能仍然可以接受。此時,建議是拆分鍵或使用范圍參數進行增量查詢。 處理緩慢的 BITOP 操作的 建議是在從站上運行它。因此,一般來說,處理中等大小的密鑰并通過將密鑰拆分為多個密鑰來規劃未來的潛在增長是有意義的。

Redis 集合與 Redis 位圖

Redis Sets 和位圖操作提供的功能本質是相似的。所以經常混淆這兩種方法中的哪一種更好。好吧,這實際上取決于用例的確切性質。顯然,這個討論只對集合和位圖都可以實現的那種操作有效。

Redis Sets 通常是高效且可擴展的,并且應該是首選的數據結構,直到它的大小變得難以為繼。Redis Set 也更易于管理,編程和調試適用于大多數應用程序。不應低估 Set 的易用性:操作位圖的代碼通常難以閱讀、理解、調試和維護。即使域非常大,集合仍然可能是合適的。例如,如果一個應用程序旨在跟蹤對熱門電子商務網站的每日訪問量,那么結果可能仍然很適合一組,因為通常只有 5-10% 的整個用戶群會每天訪問該網站。對于預計 60% 的整個用戶群每天登錄的網站來說,這顯然會發生變化。然后,考慮到對大量鍵的邏輯按位操作的大小和性能,位圖變得更加相關。Redis Set 還具有不必將 ID 映射到位偏移量的明顯優勢。同樣,如果您的值來自大于 2 的域32 那么Redis Sets必須比找出機制來分割位圖的域更容易使用。

MOOC 的分析

這是一個編造的(但足夠真實!)示例,用于可能應用 Redis 位圖操作的地方。假設您正在運行一個非常受歡迎的在線 MOOC ,成千上萬的學生已經注冊了該 MOOC。促進課程的學術團隊想要一個儀表板,他們可以在其中查看學生進度的實時狀態以及注冊學生的一般背景。您決定通過 Redis 位圖操作來實現這一點。這是一個逐步的方法。

創建一個計劃以在學生 ID 和位圖偏移之間進行映射。它可以像 ID 作為位圖中的偏移量一樣簡單。

課程開始后,創建和填充各種與人口統計相關的位圖。例如,在同一所大學注冊其他 MOOC 的學生、教育水平、性別等。

現在隨著課程的進行,您可以創建新的位圖來記錄課程進度。例如,完成第一周所有講座的學生,完成第一周所有作業的學生等。

現在,基于這些鍵創建實時分析將是一個非常簡單的練習,并且可以在拖放 UI 上完成。例如

一位教授想看看有多少學生觀看了第一周(A)的講座,但沒有完成第一周(B)的作業:操作員:BITOP。操作:A AND(非 B)。

完成第 1 周 (A)、第 2 周 (B)、第 3 周 (C) 和第 4 周 (D) 的所有作業的學生:操作員:BITOP。操作 A AND B AND C AND D. 說,這些是通過課程的人。

通過課程的所有男學生(M)(如上計算,比如說,P):操作員:BITOP。操作:M AND P。

通過課程的學生人數:BITCOUNT P.

類似地,可以將任意數量的有趣群組設置為位圖,并在其上運行此類排列。

以上就是關于“Redis數據結構:位圖”介紹,如果大家想了解更多相關知識,不妨來關注一下本站的Redis教程,里面還有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 色综久久天天综合绕视看 | 香蕉碰碰人人a久久动漫精品 | 天天干夜夜谢 | 国产精品麻豆a啊在线观看 国产精品麻豆高清在线观看 | 国产美女在线观看 | 尤物视频在线观看 | 欧美久久综合九色综合 | 成人精品视频在线观看播放 | 亚洲香蕉在线观看 | 久久久久一级片 | 愉拍精品视频在线观看 | 看真人视频一一级毛片 | 国产免费美女视频 | 亚洲精品在线免费看 | 久久99亚洲精品久久久久 | 九九99re在线视频精品免费 | 国产成人一区二区三区 | 欧美一级a俄罗斯毛片 | 久久综合九色综合亚洲小说 | 久久国产片| 亚洲黄色小视频 | 日本一本一区二区 | 99九色 | 亚洲精品98久久久久久中文字幕 | 国产五月色综合 | 99v视频国产在线观看免费 | 久久久久欧美精品三级 | 亚洲欧美色综合大色 | 久久久国产99久久国产首页 | 免费观看日本a毛片 | 中文国产成人精品久久一区 | 国产成人亚洲综合欧美一部 | 修修视频在线观看 | 久久国产精品久久 | 草草影院第一页 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠久久丁香 | 亚洲欧美日韩国产综合专区 | 91极品视频在线观看 | 国内精品免费网站牛牛 | 久久精品欧美一区二区 | 97色精品视频在线观看免费 |