就是通過乙個bit
位來表示某個元素對應的值或者狀態,其中的key
就是對應元素本身。我們知道8個bit
可以組成乙個byte
,所以bitmap
本身會極大的節省儲存空間。
redis
從2.2.0
版本開始新增了setbit
,getbit
,bitcount
等幾個bitmap
相關命令。雖然是新命令,但是並沒有新增新的資料型別,仍然屬於string
,因為setbit
等命令只不過是在set
上的擴充套件。
bitmap
的值只有0
和1
.
所以,在springboot
中也是通過redistemplate::opsforvalue
來操作並且將值規定為boolean
型別的.
命令引數
實戰說明
setbit
key,offset,[0|1]
setbit login:2020:01:01 1 1
把login:2020:01:01
第乙個位置設定值為1
getbit
key,office
getbit login:2020:01:01 1
獲取login:2020:01:01
第乙個位置的值
bitop
opt([ and | or |not | xor ]),destkey,key1,key2…
bitop and 2019count 20190101 20191231
將offset[ 20190101-20191231]範圍內的資料以與邏輯合併多個key,最終匯出到2019count
bitcount
key[, start, end]
bitcount 2019count
統計範圍內為真的數量,沒有指定範圍表示統計全部,這裡的start和end的單位是位元組,不是bit
由於bitcount
中的範圍都是按位元組算,乙個位元組又是8個bit
,因此,當我進行8位以內的操作後,實際上只能bitcount key
和bitcount key 0 0
是等價的.
如
setbit user:login:0828 1 1
setbit user:login:0828 3 1
setbit user:login:0828 7 1
此時bitcount user:login:0828
的結果與bitcount user:login:0828 0 0
一致,均為3.如果get user:login:0828
結果為q
,它對應位元組陣列是01010001
.
後續補充
後續補充
後續補充
public
void
login
(int user_id)
public
boolean
is_fans
(int user_id)
第十章:redis中bitmap的妙用 五 redis學習筆記之pipeline
五 redis學習筆記之pipeline redis是乙個cs模式的tcp server,使用和http類似的請求響應協議。乙個client可以通過乙個socket連線發起多個請求命令。每個請求命令發出後client通常 會阻塞並等待redis服務處理,redis處理完後請求命令後會將結果通過響應報...
redis學習筆記五 有序集合
1 增加元素 zadd key val property val prperty.增加key中property的值,如果元素已經存在,則修改元素的值 2 獲取元素的值 zscore key property 3 獲取排名在某個範圍的元素列表 zrange key start stop withsco...
Redis學習筆記(五) 整數集合
2.整數集合的api 參考資料 redis中,整數集合是集合鍵的底層之一。當乙個集合只包含整數元素,且這個集合中元素個數不多的情況下,redis就會使用整數集合作為集合鍵的底層實現。1.1 資料結構設計 以redis6.0原始碼為例,整數集合由intset.c intset結構定義,資料結構設計如下...