真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Bitmaps-創(chuàng)新互聯(lián)

1. 簡(jiǎn)介

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

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

a >>>>01100001

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

c >>>>01100011

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

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

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

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

key >>>>value 011000010110001001100011

2. 命令

setbit

(1)格式

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

127.0.0.1:6379>setbit

* offset :偏移量從0開(kāi)始

(2)實(shí)例

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

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

1234567891011121314151617181920
012345678910111213141516171819
01000010000100010001

unique:users:20201106 代表2020-11-06這天的獨(dú)立訪問(wèn)用戶的 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 以一個(gè)指定數(shù)字(例如10000)開(kāi)頭,直接將用戶 id 和 Bitmaps 的偏移量對(duì)應(yīng)勢(shì)必會(huì)造成一定的浪費(fèi),通常的做法是每次做 setbit 操作時(shí)將用戶 id 減去這個(gè)指定數(shù)字。

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

getbit

(1)格式

getbit獲取 Bitmaps 中某個(gè)偏移量的值

127.0.0.1:6379>getbit

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

(2)實(shí)例

獲取 id =8的用戶是否在2020-11-06這天訪問(wèn)過(guò),返回0說(shuō)明沒(méi)訪問(wèn)過(guò):

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

注:因?yàn)?00根本不存在,所以也是返回0

bitcount

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

(1)格式

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

127.0.0.1:6379>bitcount

(2)實(shí)例

計(jì)算2020-11-06這天的獨(dú)立訪問(wèn)用戶數(shù)量

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

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

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

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

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

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

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

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

bitop

(1)格式

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

127.0.0.1:6379>bittop

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

(2)實(shí)例

2020-11-04日訪問(wèn)網(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èn)網(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

計(jì)算出兩天都訪問(wèn)過(guò)網(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

計(jì)算出任意一天都訪問(wèn)過(guò)網(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 對(duì)比

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

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

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

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

? 但 Bitmaps 并不是萬(wàn)金油,假如該網(wǎng)站每天的嘟嚕訪問(wèn)用戶很少,例如只有10萬(wàn)(大量的僵尸用戶),那么兩者的對(duì)比如下表所示,很顯然,這時(shí)候使用 Bitmaps 就不太合適了,因?yàn)榛旧洗蟛糠治欢际?

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

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


網(wǎng)站欄目:Bitmaps-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://weahome.cn/article/dspsjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部