<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • Bitmaps-創(chuàng)新互聯(lián)

            1. 簡介

            10多年的渝中網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整渝中建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“渝中網(wǎng)站設(shè)計”,“渝中網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

            現(xiàn)在計算機用二進制(位)作為信息的基礎(chǔ)單位,1個字節(jié)等于8位,例如 "abc" 字符串是由3個字節(jié)組成,單實際在計算機存儲時將其用二進制表示, "abc" 分別對應(yīng)的 ASCII 碼分別是97、98、99,對應(yīng)的二進制分別是01100001、01100010和01100011,如下

            a >>>>01100001

            b >>>>01100010 >>>>abc >>>>011000010110001001100011

            c >>>>01100011

            合理地使用操作位能夠有效的提高內(nèi)存使用率和開發(fā)效率。

            Redis 提供了 Bitmaps 這個“數(shù)據(jù)類型”可以實現(xiàn)對位的操作:

            ? (1) Bitmaps 本身不是一種數(shù)據(jù)類型,實際上它就是字符串(key-value),但是它可以對字符串的位進行操作。

            ? (2) Bitmaps 單獨提供了一套命令,所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同??梢园?Bitmaps 想象成一個以位為單位的數(shù)組,數(shù)組的每個單元智能存儲0和1,數(shù)組的下標(biāo)在 Bitmaps 中叫做偏移量。

            key >>>>value 011000010110001001100011

            2. 命令

            setbit

            (1)格式

            setbit設(shè)置 Bitmaps 中某個偏移量的值(0或1)

            127.0.0.1:6379>setbit

            * offset :偏移量從0開始

            (2)實例

            ? 每個獨立用戶是否訪問過網(wǎng)站存放在 Bitmaps 中,將訪問的用戶記做1,沒有訪問的用戶自作0,用偏移量記做用戶的 id 。

            ? 設(shè)置鍵的第 offset 個位的值(從0算起),假設(shè)現(xiàn)在有20個用戶, userid =1,6,11,15,19的用戶對網(wǎng)站進行了訪問,那么當(dāng)前 Bitmaps 初始化結(jié)果如圖

            1234567891011121314151617181920
            012345678910111213141516171819
            01000010000100010001

            unique:users:20201106 代表2020-11-06這天的獨立訪問用戶的 Bitmaps

            127.0.0.1:6379>setbit unique:users:20201106 1 1
            (integer) 0
            127.0.0.1:6379>setbit unique:users:20201106 6 1
            (integer) 0
            127.0.0.1:6379>setbit unique:users:20201106 11 1
            (integer) 0
            127.0.0.1:6379>setbit unique:users:20201106 15 1
            (integer) 0 
            127.0.0.1:6379>setbit unique:users:20201106 19 1
            (integer) 0

            注:

            ? 很多應(yīng)用的用戶 id 以一個指定數(shù)字(例如10000)開頭,直接將用戶 id 和 Bitmaps 的偏移量對應(yīng)勢必會造成一定的浪費,通常的做法是每次做 setbit 操作時將用戶 id 減去這個指定數(shù)字。

            ? 在第一次初始化 Bitmaps 時,假如偏移量非常大,那么整個初始化過程執(zhí)行會比較慢,可能會造成 Redis 的阻塞。

            getbit

            (1)格式

            getbit獲取 Bitmaps 中某個偏移量的值

            127.0.0.1:6379>getbit

            獲取鍵的第 offset 位的值(從0開始算)

            (2)實例

            獲取 id =8的用戶是否在2020-11-06這天訪問過,返回0說明沒訪問過:

            127.0.0.1:6379>getbit unique:users:20201106 8
            (integer) 0
            127.0.0.1:6379>getbit unique:users:20201106 1
            (integer) 1
            127.0.0.1:6379>getbit unique:users:20201106 100
            (integer) 0

            注:因為100根本不存在,所以也是返回0

            bitcount

            統(tǒng)計字符串被設(shè)置為1的 bit 數(shù)。一般情況下,給定的整個字符串都會被進行計數(shù),通過指定額外的 start 或 end 參數(shù),可以讓計數(shù)只在特定的位上進行。 start 和 end 參數(shù)的設(shè)置,都可以使用負(fù)數(shù)值:比如-1表示最后一個位,而-2表示倒數(shù)第二個位, start 、 end 是指 bit 組的字節(jié)的下標(biāo)數(shù),二者皆包含。

            (1)格式

            bitcount[start end] 統(tǒng)計字符串從 start 字節(jié)到 end 字節(jié)比特值為1的數(shù)量

            127.0.0.1:6379>bitcount

            (2)實例

            計算2020-11-06這天的獨立訪問用戶數(shù)量

            127.0.0.1:6379>bitcount unique:users:20201106
            (integer) 5

            start?和?end?代表起始和結(jié)束字節(jié)數(shù),下面操作計算用戶 id 在第1個字節(jié)到第3個字節(jié)之間的獨立訪問用戶數(shù)量,對應(yīng)的用戶 id 是11,15,19。

            127.0.0.1:6379>bitcount unique:users:20201106 1 3
            (integer) 3

            舉例:K1【01000001 01000000 00000000 00100001】,對應(yīng)【0,1,2,3】

            bitcount K1 1 2? :統(tǒng)計下標(biāo)1、2字節(jié)組中 bit =1的個數(shù),即01000000 00000000 >>>>1

            bitcount K1 1 3? :統(tǒng)計下標(biāo)1、3字節(jié)組中 bit =1的個數(shù),即01000000 00100001?>>>>3

            bitcount K1 1 -2? :統(tǒng)計下標(biāo)1、3字節(jié)組中 bit =1的個數(shù),即01000000 00000000 >>>>3

            注意: redis 的 setbit 設(shè)置或清除的是 bit 位置,而 bitcount 計算的是 byte 位置。

            bitop

            (1)格式

            bitop and (or/not/xor)[key...]

            127.0.0.1:6379>bittop

            bitop 是一個復(fù)合操作,他可以做多個 Bitmaps 的 and (交集)、 or (并集)、 not (非)、xor (異或)操作并將結(jié)果保存在 destkey中。

            (2)實例

            2020-11-04日訪問網(wǎng)站的 userid =1,2,5,9

            setbit unique:users:20201104 1 1

            setbit unique:users:20201104 2?1

            setbit unique:users:20201104 5?1

            setbit unique:users:20201104 9?1

            2020-11-03日訪問網(wǎng)站的 userid = 0,1,4,9

            setbit unique:users:20201103?0?1

            setbit unique:users:20201103 1?1

            setbit unique:users:20201103 4?1

            setbit unique:users:20201103 9?1

            計算出兩天都訪問過網(wǎng)站的用戶數(shù)量

            bitop and unique:users:and:20201104_03

            unique:users:20201103 unique:users:20201104

            127.0.0.1:6379>bitop and unique:users:and:20201104_03 unique:users:20201103 unique:users:20201104
            (integer) 2
            127.0.0.1:6379>bitcount unique:users:and:20201104_03

            unique:users:202011040110010001
            0123456789

            ?????????????????????????????↓

            unique:users:202011031100100001
            0123456789

            ? ↓

            unique:users:20201104_030100000001
            0123456789

            計算出任意一天都訪問過網(wǎng)站的用戶數(shù)量(例如月活躍就是類似這種),可以使用 or 求并集

            127.0.0.1:6379>bitop or unique:users:or:20201104_03 unique:users:20201103 unique:users:20201104
            (integer) 2
            127.0.0.1:6379>bitcount unique:users:or:20201104_03
            (integer) 6

            3. Bitmaps 與 set 對比

            ? 假設(shè)網(wǎng)站有1億用戶,每天獨立訪問的用戶有5千萬,如果每天用集合類型和 Bitmaps 分別存儲活躍用戶可以得到表

            set 和 Bitmaps 存儲一天活躍用戶對比
            數(shù)據(jù)類型每個用戶 id 占用空間需要存儲的用戶量全部內(nèi)存量
            集合類型64位5000000064位*50000000=400MB
            Bitmaps1位1000000001位*100000000=12.5MB

            ? 很明顯,這種情況下使用 Bitmaps 能節(jié)省很多的內(nèi)存空間,尤其是隨著時間推移節(jié)省的內(nèi)存還是非??捎^的

            set 和 Bitmaps 存儲一天活躍用戶對比
            數(shù)據(jù)類型一天一個月一年
            集合類型400MB12GB144GB
            Bitmaps12.5MB375MB4.5GB

            ? 但 Bitmaps 并不是萬金油,假如該網(wǎng)站每天的嘟嚕訪問用戶很少,例如只有10萬(大量的僵尸用戶),那么兩者的對比如下表所示,很顯然,這時候使用 Bitmaps 就不太合適了,因為基本上大部分位都是0

            set 和 Bitmaps 存儲一天活躍用戶對比(獨立用戶比較少)
            數(shù)據(jù)類型每個用戶 id 占用空間需要存儲的用戶量全部內(nèi)存量
            集合類型64位10000064位*100000=800KB
            Bitmaps1位1000000001位*100000000=12.5MB

            你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

            當(dāng)前標(biāo)題:Bitmaps-創(chuàng)新互聯(lián)
            URL標(biāo)題:http://www.jbt999.com/article26/dspsjg.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)網(wǎng)站排名、云服務(wù)器移動網(wǎng)站建設(shè)、動態(tài)網(wǎng)站商城網(wǎng)站

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            成都app開發(fā)公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 久久国产乱子伦精品免费女,网站 | 3p超刺激珍藏了三年极品人妻 | 91牛服务入口 | 香蕉美女黄色视频 | 国产在线资源 |