国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redis之bitmap類型解讀

這篇具有很好參考價(jià)值的文章主要介紹了Redis之bitmap類型解讀。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

基本介紹

基本命令?

Setbit?

Getbit?

BITCOUNT?

應(yīng)用場景

統(tǒng)計(jì)當(dāng)日活躍用戶

用戶簽到

bitmap - Redis布隆過濾器 (應(yīng)對緩存穿透問題)


基本介紹

Redis 的位圖(bitmap)是由多個(gè)二進(jìn)制位組成的數(shù)組,只有兩種狀態(tài),0和1, 數(shù)組中的每個(gè)二進(jìn)制位都有與之對應(yīng)的偏移量(從 0 開始),通過這些偏移量可以對位圖中指定的一個(gè)或多個(gè)二進(jìn)制位進(jìn)行操作。

可以把 Bitmap 想象成一個(gè)以位為單位的數(shù)組,數(shù)組的每個(gè)單元只能存儲 0 和 1,數(shù)組的下標(biāo)在 Bitmap 中叫做偏移量 offset,bitmap默認(rèn)值都為0.

?BitMap底層實(shí)際上使用字符串來存儲,由于 Redis 中字符串的最大長度是 512 MB字節(jié),所以 BitMap 的偏移量 offset 值也是有上限的,其最大值是:8 * 1024 * 1024 * 512 = 2^32(4G)。

BitMap 的基本原理就是用一個(gè) bit 來標(biāo)記某個(gè)元素對應(yīng)的 Value,而 Key 即是該元素。由于采用一 個(gè)bit 來存儲一個(gè)數(shù)據(jù),因此可以大大的節(jié)省空間。

計(jì)算機(jī)分配給內(nèi)存的最小單元是bit,1Byte=8bit, 1個(gè)整數(shù)類型為4Byte=32bit。

基本命令?

常用命令 作用
1、getbit key offset 用于獲取Redis中指定key對應(yīng)的值,中對應(yīng)offset的bit
2、setbit key key offset value 用于修改指定key對應(yīng)的值,中對應(yīng)offset的bit
3、 bitcount key [start end] 用于統(tǒng)計(jì)字符串被設(shè)置為1的bit數(shù)
4、bitop and/or/xor/not destkey key [key …] 用于對多個(gè)key求邏輯與/邏輯或/邏輯異或/邏輯非
Setbit?

Redis Setbit 命令用于對 key 所儲存的字符串值,設(shè)置或清除指定偏移量上的位(bit)。

redis> SETBIT bit 10086 1
(integer) 0
 
redis> GETBIT bit 10086
(integer) 1
 
redis> GETBIT bit 100   # bit 默認(rèn)被初始化為 0
(integer) 0

返回值:指定偏移量原來儲存的位。

Getbit?

Redis Getbit 命令用于對 key 所儲存的字符串值,獲取指定偏移量上的位(bit)。

# 對不存在的 key 或者不存在的 offset 進(jìn)行 GETBIT, 返回 0
 
redis> EXISTS bit
(integer) 0
 
redis> GETBIT bit 10086
(integer) 0
 
 
# 對已存在的 offset 進(jìn)行 GETBIT
 
redis> SETBIT bit 10086 1
(integer) 0
 
redis> GETBIT bit

返回值:字符串值指定偏移量上的位(bit)。當(dāng)偏移量 OFFSET 比字符串值的長度大,或者 key 不存在時(shí),返回 0 。

BITCOUNT?

統(tǒng)計(jì)指定位區(qū)間上,值為 1 的個(gè)數(shù)。語法格式如下:

BITCOUNT key [start end]

127.0.0.1:6379> BITCOUNT user:1

(integer) 8

只需指定 start 和 end 參數(shù),即可僅對特定字節(jié)進(jìn)行計(jì)數(shù)。start 和 end 參數(shù)和 GETRANGE 命令的參數(shù)類似,都可以使用負(fù)數(shù),比如 -1 表示倒數(shù)第一個(gè)位, -2 表示倒數(shù)第二個(gè)位。.?

應(yīng)用場景

統(tǒng)計(jì)當(dāng)日活躍用戶

每日活躍統(tǒng)計(jì)創(chuàng)建一個(gè)bitmap鍵,當(dāng)用戶活躍了根據(jù)用戶id的偏移量來設(shè)置對應(yīng)的位為1

用戶簽到

每個(gè)用戶創(chuàng)建一個(gè)位圖的鍵,以某一天為基礎(chǔ),之后的天數(shù)距離這一天的天數(shù)為偏移量,如果用戶點(diǎn)擊了簽到,則設(shè)置對用的偏移位為1。

bitmap - Redis布隆過濾器 (應(yīng)對緩存穿透問題)

舉例:比如爬蟲服務(wù)器在爬取電商網(wǎng)站的商品信息時(shí),首先經(jīng)過緩存,如果緩存查不到,再去數(shù)據(jù)庫獲取信息,因?yàn)榕老x的效率很高,且sku很有可能是不存在或者已下架的,就會造成緩存穿透,大量請求被發(fā)送到數(shù)據(jù)庫,導(dǎo)致服務(wù)器受到影響。

此時(shí),可以在緩存層之前,添加一個(gè)布隆過濾器,布隆 過濾器看作是一個(gè)bitmap,sku作為offset值,如果商品真實(shí)存在,bit值設(shè)為1。首先將商品數(shù)據(jù)初始化,當(dāng)有請求時(shí),通過getbit判斷sku是否有效。如果布隆過濾器認(rèn)為商品不存在,就拒絕訪問,這樣就可以保護(hù)存儲層。文章來源地址http://www.zghlxwxcb.cn/news/detail-677463.html

到了這里,關(guān)于Redis之bitmap類型解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Redis】內(nèi)存數(shù)據(jù)庫Redis進(jìn)階(Redis哨兵集群)

    【Redis】內(nèi)存數(shù)據(jù)庫Redis進(jìn)階(Redis哨兵集群)

    基于 Redis 集群解決單機(jī) Redis 存在的四大問題: ??搭建一個(gè)三節(jié)點(diǎn)形成的 Sentinel 集群,來監(jiān)管 Redis 主從集群。 ??【Redis】內(nèi)存數(shù)據(jù)庫Redis進(jìn)階(Redis主從集群) ??架構(gòu)圖: 三個(gè)sentinel實(shí)例信息: 節(jié)點(diǎn) IP PORT s1 192.168.150.101 27001 s2 192.168.150.101 27002 s3 192.168.150.101 27003 之前

    2024年02月14日
    瀏覽(19)
  • Redis緩存數(shù)據(jù)庫

    目錄 一、概述 1、Redis ?2、Redis的安裝 Redis Windows環(huán)境設(shè)置 3、String: 字符串 3.1、字符串 3.2、數(shù)值 3.3、bitmap 4、Hash: 散列 5、List: 列表 6、Set: 集合 7、Sorted Set: 有序集合 常識: 磁盤:1.尋址:ms(毫秒)2.帶寬:MB/s 內(nèi)存:1.尋址:ns? ? (納秒)?2.帶寬:GB/s 秒--毫秒--微妙--納秒

    2024年02月04日
    瀏覽(24)
  • Redis內(nèi)存數(shù)據(jù)庫

    Redis內(nèi)存數(shù)據(jù)庫 NoSQL數(shù)據(jù)庫簡介 Redis簡介 Redis應(yīng)用場景 windows下安裝和使用Redis 在linux下安裝redis Redis數(shù)據(jù)可視化RedisDesktopManager Redis配置 Redis 數(shù)據(jù)類型 Redis 字符串(String) Redis 哈希(Hash) Redis 列表(List) Redis 集合(Set) Redis 有序集合(sorted set) Redis key命令 Redis連接命令 Redis服務(wù)器命令

    2024年02月09日
    瀏覽(24)
  • 1 - 搭建Redis數(shù)據(jù)庫服務(wù)器|LNP+Redis

    1 - 搭建Redis數(shù)據(jù)庫服務(wù)器|LNP+Redis

    數(shù)據(jù)庫服務(wù)軟件分為2類: 關(guān)系型數(shù)據(jù)庫服務(wù)軟件 簡稱 RDBMS 按照預(yù)先設(shè)置的組織結(jié)構(gòu) 將數(shù)據(jù)存儲在物理介質(zhì)上 數(shù)據(jù)之間可以做關(guān)聯(lián)操作 非關(guān)系型數(shù)據(jù)庫服務(wù)軟件 簡稱 NoSQL 不僅僅是SQL 不需要預(yù)先定義數(shù)據(jù)存儲結(jié)構(gòu) 每條記錄可以有不同的數(shù)據(jù)類型和字段個(gè)數(shù) 只需要 key valu

    2024年01月25日
    瀏覽(66)
  • 126、高頻Redis面試題:如何保證Redis和數(shù)據(jù)庫數(shù)據(jù)一致性

    126、高頻Redis面試題:如何保證Redis和數(shù)據(jù)庫數(shù)據(jù)一致性

    問題:如果數(shù)據(jù)庫中的某條數(shù)據(jù)放入緩存后,又馬上被更新了,那我們應(yīng)該如何更新緩存 缺點(diǎn): 如果先更新緩存成功,在更新數(shù)據(jù)庫的時(shí)候失敗,這時(shí)候會導(dǎo)致數(shù)據(jù)不一致;緩存的作用是不是臨時(shí)將我們數(shù)據(jù)保存在內(nèi)存,便于提高查詢速度;但是如果某條數(shù)據(jù)在數(shù)據(jù)庫中都

    2024年02月13日
    瀏覽(27)
  • Redis 數(shù)據(jù)庫高可用

    Redis 數(shù)據(jù)庫高可用

    (1)在web服務(wù)器中,高可用是指服務(wù)器可以正常訪問的時(shí)間,衡量的標(biāo)準(zhǔn)是在多長時(shí)間內(nèi)可以提供正常服務(wù)(99.9%、99.99%、99.999%等等)。 (2)在Redis中,保證提供正常服務(wù)(如主從分離、快速容災(zāi)技術(shù)),還需要考慮數(shù)據(jù)容量的擴(kuò)展、數(shù)據(jù)安全不會丟失等。 實(shí)現(xiàn)高可用的技

    2024年02月15日
    瀏覽(18)
  • Redis 數(shù)據(jù)庫 NoSQL

    Redis 數(shù)據(jù)庫 NoSQL

    目錄 一、NoSQL 二、為什么會出現(xiàn)NoSQL技術(shù) 三、NoSQL的類別 鍵值(Key-Value)存儲數(shù)據(jù)庫 列存儲數(shù)據(jù)庫 文檔型數(shù)據(jù)庫 圖形(Graph)數(shù)據(jù)庫 四、NoSQL適應(yīng)場景 五、在分布式數(shù)據(jù)庫中CAP原理 1、CAP 2、BASE NoSQL(Not Only SQL)即不僅僅是SQL,泛指非關(guān)系型的數(shù)據(jù)庫,它可以作為關(guān)系型數(shù)

    2024年02月12日
    瀏覽(25)
  • Redis緩存數(shù)據(jù)庫(四)

    Redis緩存數(shù)據(jù)庫(四)

    目錄 一、概述 1、Redis Sentinel 1.1、docker配置Redis Sentinel環(huán)境 2、Redis存儲方案 2.1、哈希鏈 2.2、哈希環(huán) 3、Redis分區(qū)(Partitioning)? 4、Redis面試題 Redis Sentinel為Redis提供了 高可用解決方案 。實(shí)際上這意味著使用Sentinel可以部署一套Redis, 在沒有人為干預(yù)的情況下去應(yīng)付各種各樣的失

    2024年02月05日
    瀏覽(22)
  • 【后端面經(jīng)-數(shù)據(jù)庫】Redis詳解——Redis基本概念和特點(diǎn)

    目錄 1. Redis基本概念 2. Redis特點(diǎn) 2.1 優(yōu)點(diǎn) 2.2 缺點(diǎn) 3. Redis的應(yīng)用場景 面試模擬 參考資料 聲明:Redis的相關(guān)知識是面試的一大熱門知識點(diǎn),同時(shí)也是一個(gè)龐大的體系,所涉及的知識點(diǎn)非常多,如果用一篇文章羅列,往往會陷入知識海洋中無法感知其全貌,因此,這段時(shí)間我會試

    2024年02月13日
    瀏覽(22)
  • redis數(shù)據(jù)庫和MongoDB數(shù)據(jù)庫基本操作

    (1) 設(shè)置鍵值 (2) 讀取鍵值 (3) 數(shù)值類型自增1 (4) 數(shù)值類型自減1 (5) 查看值的長度 (1)對列表city插入元素:Shanghai Suzhou Hangzhou (2)將列表city里的頭部的元素移除 (3) 對一個(gè)已存在的列表插入新元素 (4)查看list的值長度 (1) 設(shè)置一個(gè)hash表,order表里包括的

    2024年02月16日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包