Redis學習筆記(五) BitMap

2021-10-02 02:08:45 字數 1838 閱讀 1344

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

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

bitmap的值只有01.

所以,在springboot中也是通過redistemplate::opsforvalue來操作並且將值規定為boolean型別的.

命令引數

實戰說明

setbit

key,offset,[0|1]

setbit login:2020:01:01 1 1login: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 keybitcount 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結構定義,資料結構設計如下...