欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis中的bitmap詳解

 更新時(shí)間:2021年10月25日 16:24:41   作者:小樂樂的天臺  
BitMap是通過一個(gè)bit位來表示某個(gè)元素對應(yīng)的值或者狀態(tài),其中的key就是對應(yīng)元素本身。我們知道8個(gè)bit可以組成一個(gè)Byte,所以bitmap本身會極大的節(jié)省儲存空間,下面通過本文給大家介紹Redis中的bitmap知識,感興趣的朋友一起看看吧

1、什么是bitmap?

bitmap也叫位圖,也就是用一個(gè)bit位來表示一個(gè)東西的狀態(tài),我們都知道bit位是二進(jìn)制,所以只有兩種狀態(tài),0和1。

2、為什么要有bitmap?

bitmap的出現(xiàn)就是為了大數(shù)據(jù)量而來的,但是前提是統(tǒng)計(jì)的這個(gè)大數(shù)據(jù)量每個(gè)的狀態(tài)只能有兩種,因?yàn)槊恳粋€(gè)bit位只能表示兩種狀態(tài)。
下面我們直接以一個(gè)統(tǒng)計(jì)億級用戶活動的狀態(tài)來說明吧。

3、案例說明

3.1、案例描述

如果有一個(gè)上億用戶的系統(tǒng),需要我們?nèi)ソy(tǒng)計(jì)每一天的用戶登錄情況,我們應(yīng)該如何去解決?
前提條件:設(shè)置在9月19號有下標(biāo)為100、101、102、103四個(gè)用戶都登錄了系統(tǒng)
設(shè)置在9月20號有下標(biāo)為100、101、102三個(gè)用戶都登錄了系統(tǒng)
提出問題:
1、取出9月19號登錄系統(tǒng)的有多少人?
答:直接獲取即可。
2、取出9月19號和9月20號連續(xù)登錄系統(tǒng)的有多少人?
答:兩天的數(shù)據(jù)取&運(yùn)算。
3、取出9月19號與9月20號任意一天登錄的有多少人?
答:兩天的數(shù)據(jù)取|運(yùn)算。

3.2、解決方案

3.2.1、解決方案1—使用傳統(tǒng)數(shù)據(jù)庫解決

如果我們需要使用傳統(tǒng)的數(shù)據(jù)庫去統(tǒng)計(jì)的話,我么需要創(chuàng)建一張表,然后某個(gè)用戶登錄了,我們就去在表里面插上一條記錄,登記用戶的id,用戶登錄的時(shí)間等等,但是這樣出現(xiàn)的問題就是,每一天的數(shù)據(jù)量都很大,我們在統(tǒng)計(jì)日活時(shí),效率就很低,所以這種解決方案是不能被考慮的。

3.2.2、解決方案2—使用bitmap解決

既然用戶登錄只有兩種狀態(tài),那么,我們就可以用bitmap
比如0表示未登錄,1表示登錄

// 設(shè)置在9月19號有下標(biāo)為100、101、102、103四個(gè)用戶都登錄了系統(tǒng) start
127.0.0.1:6379> setbit login_09_19 100 1
(integer) 0
127.0.0.1:6379> setbit login_09_19 101 1
(integer) 0
127.0.0.1:6379> setbit login_09_19 102 1
(integer) 0
127.0.0.1:6379> setbit login_09_19 103 1
(integer) 0
// 設(shè)置在9月19號有下標(biāo)為100、101、102、103四個(gè)用戶都登錄了系統(tǒng) end

// 設(shè)置在9月20號有下標(biāo)為100、101、102三個(gè)用戶都登錄了系統(tǒng) start
127.0.0.1:6379> setbit login_09_20 100 1
(integer) 0
127.0.0.1:6379> setbit login_09_20 101 1
(integer) 0
127.0.0.1:6379> setbit login_09_20 102 1
(integer) 0
// 設(shè)置在9月20號有下標(biāo)為100、101、102三個(gè)用戶都登錄了系統(tǒng) end

// 取出9月19號登錄系統(tǒng)的有多少人? start
127.0.0.1:6379> bitcount login_09_19
(integer) 4
// 取出9月19號登錄系統(tǒng)的有多少人? end

// 取出9月19號和9月20號連續(xù)登錄系統(tǒng)的有多少人?start
127.0.0.1:6379> bitop and login_in_09_19_20:and login_09_19 login_09_20
(integer) 13
127.0.0.1:6379> bitcount login_in_09_19_20:and
(integer) 3
// 取出9月19號和9月20號連續(xù)登錄系統(tǒng)的有多少人?end

// 取出9月19號與9月20號任意一天登錄的有多少人?start
127.0.0.1:6379> bitop or login_in_09_19_20:or login_09_19 login_09_20
(integer) 13
127.0.0.1:6379> bitcount login_in_09_19_20:or
(integer) 4
// 取出9月19號與9月20號任意一天登錄的有多少人?end

在這里插入圖片描述

到此這篇關(guān)于Redis中的bitmap詳解的文章就介紹到這了,更多相關(guān)Redis中的bitmap內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redisson延時(shí)隊(duì)列RedissonDelayed的具體使用

    Redisson延時(shí)隊(duì)列RedissonDelayed的具體使用

    定時(shí)調(diào)度基本是每個(gè)項(xiàng)目都會遇到的業(yè)務(wù)場景,一般地,都會通過任務(wù)調(diào)度工具執(zhí)行定時(shí)任務(wù)完成,但是會有一定的缺點(diǎn),本文主要介紹了Redisson延時(shí)隊(duì)列RedissonDelayed的具體使用,感興趣的可以了解一下
    2024-02-02
  • odoo中使用redis實(shí)現(xiàn)緩存的步驟

    odoo中使用redis實(shí)現(xiàn)緩存的步驟

    這篇文章主要介紹了odoo中使用redis實(shí)現(xiàn)緩存的步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 淺談我是如何用redis做實(shí)時(shí)訂閱推送的

    淺談我是如何用redis做實(shí)時(shí)訂閱推送的

    這篇文章主要介紹了淺談我是如何用redis做實(shí)時(shí)訂閱推送的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Redis消息隊(duì)列的三種實(shí)現(xiàn)方式

    Redis消息隊(duì)列的三種實(shí)現(xiàn)方式

    本文主要介紹了Redis消息隊(duì)列的三種實(shí)現(xiàn)方式,主要包括List實(shí)現(xiàn)消息隊(duì)列,PubSub消息隊(duì)列,Stream消息隊(duì)列,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Redis出現(xiàn)(error)NOAUTH?Authentication?required.報(bào)錯(cuò)的解決辦法(秒懂!)

    Redis出現(xiàn)(error)NOAUTH?Authentication?required.報(bào)錯(cuò)的解決辦法(秒懂!)

    這篇文章主要給大家介紹了關(guān)于Redis出現(xiàn)(error)NOAUTH?Authentication?required.報(bào)錯(cuò)的解決辦法,對于 這個(gè)錯(cuò)誤這通常是因?yàn)镽edis服務(wù)器需要密碼進(jìn)行身份驗(yàn)證,但客戶端沒有提供正確的身份驗(yàn)證信息導(dǎo)致的,需要的朋友可以參考下
    2024-03-03
  • redis部署及各種數(shù)據(jù)類型使用命令詳解

    redis部署及各種數(shù)據(jù)類型使用命令詳解

    這篇文章主要介紹了redis部署及各種數(shù)據(jù)類型使用命令,編譯安裝redis及部署過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • redisson鎖tryLock的正確使用方式

    redisson鎖tryLock的正確使用方式

    這篇文章主要介紹了redisson鎖tryLock的正確使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 關(guān)于Redis解決Session共享問題

    關(guān)于Redis解決Session共享問題

    這篇文章主要介紹了Redis解決Session共享問題,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Redis中的bitmap詳解

    Redis中的bitmap詳解

    BitMap是通過一個(gè)bit位來表示某個(gè)元素對應(yīng)的值或者狀態(tài),其中的key就是對應(yīng)元素本身。我們知道8個(gè)bit可以組成一個(gè)Byte,所以bitmap本身會極大的節(jié)省儲存空間,下面通過本文給大家介紹Redis中的bitmap知識,感興趣的朋友一起看看吧
    2021-10-10
  • 基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié)

    基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié)

    本文主要介紹了基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論