Redis中bitmap的妙用

2022-09-23 05:16:52 字數 2865 閱讀 9342

1、bitmap是什麼

就是通過一個bit位來表示某個元素對應的值或者狀態,其中的key就是對應元素本身。我們知道8個bit可以組成一個byte,所以bitmap本身會極大的節省儲存空間。

2、

redis中的bitmap

redis從2.2.0版本開始新增了setbit,getbit,bitcount等幾個bitmap相關命令。雖然是新命令,但是並沒有新增新的資料型別,因為setbit等命令只不過是在set上的擴充套件。

3、

setbit命令介紹

指令setbit key offset value

設定或者清空key的value(字串)在offset處的bit值(只能只0或者1)。

4、

空間佔用、以及第一次分配空間需要的時間

在一臺2010macbook pro上,offset為2^32-1(分配512mb)需要~300ms,offset為2^30-1(分配128mb)需要~80ms,offset為2^28-1(分配32mb)需要~30ms,offset為2^26-1(分配8mb)需要8ms。《來自官方文件》

大概的空間佔用計算公式是:($offset/8/1024/1024)mb

5、使用場景一:使用者簽到

很多**都提供了簽到功能(這裡不考慮資料落地事宜),並且需要展示最近一個月的簽到情況,如果使用bitmap我們怎麼做?一言不合亮**!

根據日期 offset =hash % 365  ; key = 年份#使用者id

6、使用場景二:統計活躍使用者

說明:對一個或多個儲存二進位制位的字串 key 進行位元操作,並將結果儲存到 destkey 上。

說明:bitop 命令支援 and 、 or 、 not 、 xor 這四種操作中的任意一種引數

20190216 活躍使用者 【1,2】

20190217 活躍使用者

統計20190216~20190217 總活躍使用者數: 1

1、bitmap是什麼

就是通過一個bit位來表示某個元素對應的值或者狀態,其中的key就是對應元素本身。我們知道8個bit可以組成一個byte,所以bitmap本身會極大的節省儲存空間。

2、

redis中的bitmap

redis從2.2.0版本開始新增了setbit,getbit,bitcount等幾個bitmap相關命令。雖然是新命令,但是並沒有新增新的資料型別,因為setbit等命令只不過是在set上的擴充套件。

3、

setbit命令介紹

指令setbit key offset value

設定或者清空key的value(字串)在offset處的bit值(只能只0或者1)。

4、

空間佔用、以及第一次分配空間需要的時間

在一臺2010macbook pro上,offset為2^32-1(分配512mb)需要~300ms,offset為2^30-1(分配128mb)需要~80ms,offset為2^28-1(分配32mb)需要~30ms,offset為2^26-1(分配8mb)需要8ms。《來自官方文件》

大概的空間佔用計算公式是:($offset/8/1024/1024)mb

5、使用場景一:使用者簽到

很多**都提供了簽到功能(這裡不考慮資料落地事宜),並且需要展示最近一個月的簽到情況,如果使用bitmap我們怎麼做?一言不合亮**!

根據日期 offset =hash % 365  ; key = 年份#使用者id

6、使用場景二:統計活躍使用者

說明:對一個或多個儲存二進位制位的字串 key 進行位元操作,並將結果儲存到 destkey 上。

說明:bitop 命令支援 and 、 or 、 not 、 xor 這四種操作中的任意一種引數

20190216 活躍使用者 【1,2】

20190217 活躍使用者

統計20190216~20190217 總活躍使用者數: 1

Redis 中 BitMap 的使用場景

bitmap 原本的含義是用一個位元位來對映某個元素的狀態。由於一個位元位只能表示 0 和 1 兩種狀態,所以 bitmap 能對映的狀態有...

redis 學習(13) BitMap

bitmap,即點陣圖,其實也就是 byte 陣列,用二進位制表示,只有 0 和 1 兩個數字。 如圖所示 命令含義 getbit key offset 對key所儲存的字串值,獲取指定偏移量上的位 bit setbit key offset value 對key所儲存的字串值,設定或清除指定偏移量...

shell中 的妙用

1 截斷功能 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my file txt 拿掉最後一條 及其左邊的字串 my file...