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

redis的string類型及bitmap介紹

 更新時(shí)間:2022年07月27日 14:25:58   作者:lsd&xql  
這篇文章主要介紹了redis的string類型及bitmap介紹,redis有很多的客戶端連接進(jìn)來,站在redis所在機(jī)器的角度來說,就是有很多socket的連接

redis運(yùn)行原理

redis有很多的客戶端連接進(jìn)來,站在redis所在機(jī)器的角度來說,就是有很多socket的連接,并且是打在內(nèi)核
上面的,redis是一個(gè)進(jìn)程,進(jìn)程可以調(diào)用內(nèi)核上的epoll,來遍歷尋找哪一個(gè)客戶端發(fā)送數(shù)據(jù)過來了(這里是單進(jìn)程單線程來處理用戶數(shù)據(jù)的)。

redis使用

redis默認(rèn)有16個(gè)庫

輸入:
進(jìn)入基本分組

keys * 查詢所有的key
FLUSHDB 清除所有的key

對(duì)于如上nx的命令是我當(dāng)前的key如果沒有被設(shè)置則把ooxx給設(shè)置成功,如果設(shè)置的key已經(jīng)有value了,
則返回nil (多用于分布式鎖的獲取,只能有一個(gè)獲取成功)

對(duì)于xx命令,只有存在的時(shí)候才能進(jìn)行操作。

mset命令(設(shè)置多個(gè)key和value)

append命令以及getrange命令

redis正反向索引

前面是從0,1,2開始的,后面則是從-1開始遞減的,所以也可以按照下面方式寫

SETRANGE 在給定范圍設(shè)置字符串:

獲取字符串長度:

獲取key所對(duì)應(yīng)的value類型(主要是看set命令分組是在string上面的)

再來看一下object命令

它可以查看value的編碼類型(面向 redis string類型,除了字符串操作還有計(jì)算的操作【計(jì)算的操作面向數(shù)值的】)

incr和decr相關(guān)命令【可用于搶購,秒殺,點(diǎn)贊,評(píng)論數(shù),詳情頁(比如說淘寶詳情頁,一定會(huì)后端發(fā)起一個(gè)異步查詢購買數(shù)等,查redis,可以規(guī)避并發(fā)下,對(duì)數(shù)據(jù)庫的事務(wù)操作,
完全由redis內(nèi)存操作代替)】

redis二進(jìn)制安全

redis進(jìn)程與外界交互的時(shí)候,面向流我們有字節(jié)流,以及字符流,那么redis客戶端
訪問的時(shí)候,從socket里面拿到的是字節(jié)流的數(shù)據(jù),只要未來的雙方客戶端和服務(wù)端有同樣的
編解碼方式,數(shù)據(jù)就不會(huì)被破壞。
如 set k1 = 9999,執(zhí)行strlen 輸出4,redis里面存這個(gè)數(shù)據(jù)是按照一個(gè)字符一個(gè)字節(jié)來存入的,直接
向字符流去寫,執(zhí)行incr之后是先把字節(jié)流拿出來轉(zhuǎn)換成數(shù)值的,轉(zhuǎn)換成數(shù)值之后會(huì)更新key的encoding
編碼,只要加成功就更新成int了,如果下次加的話就可以直接檢查這個(gè)encoding類型了,如果加的數(shù)
不是int類型則報(bào)錯(cuò)
另一種如 set k2 中,是占3個(gè)字節(jié)的(軟件和redis通信用的utf-8)
我們?cè)僭O(shè)置一個(gè)k3占2個(gè)字節(jié)(gbk編碼)

然后退出用redis-cli --raw來登錄,會(huì)觸發(fā)一個(gè)格式化(如果不帶上–raw是只會(huì)識(shí)別ascii碼的,超出部分則按照16進(jìn)制來展示的,如果加上raw則會(huì)觸發(fā)編碼集的格式化)

key上有encoding的話,就相當(dāng)于做了一個(gè)優(yōu)化,來判斷我當(dāng)前這個(gè)操作是否是可行的

getset命令

getset命令是將舊的值返回并將新的值給設(shè)置進(jìn)去,(相對(duì)于get 和set單獨(dú)執(zhí)行的話,要發(fā)兩個(gè)單獨(dú)
的命令過去,IO通信兩次,而這種方式只通信了一次【節(jié)省資源】)

mset 設(shè)置多個(gè)key多個(gè)value
msetnx (設(shè)置多個(gè)key對(duì)應(yīng)的value保證原子性)下面的圖中msetnx 在設(shè)置k3的時(shí)候失敗了

位圖(bitmap)

setbit 方法,在對(duì)應(yīng)的bit位上面設(shè)置值

bitpos命令:
找到第一個(gè)字節(jié) 中第一個(gè)1出現(xiàn)的位置

找到第二個(gè)字節(jié)出現(xiàn)1的第一個(gè)位置

統(tǒng)計(jì)1在字節(jié)范圍出現(xiàn)了幾次:

bitop 命令可以按位對(duì)value進(jìn)行與和或等運(yùn)算

場(chǎng)景題

1、公司有用戶系統(tǒng),統(tǒng)計(jì)用戶的登錄天數(shù),且窗口隨機(jī)(某天往前推一周,以及往后推一周,用戶登錄的天數(shù)統(tǒng)計(jì)一下)
一年設(shè)置為400天,可以使用50個(gè)字節(jié)存用戶全年的登錄狀態(tài)

-2 和-1為最后兩個(gè)字節(jié)(查詢300天到第400天)登錄多少次?!咀層脩魹閗ey登錄天數(shù)為value】
當(dāng)然如果覺得用戶量特別大的話可以考慮一部分用戶存一個(gè)redis,另一部分
存另一個(gè)redis【注:1個(gè)用戶50個(gè)字節(jié),那么20個(gè)用戶存1k的空間,20000個(gè)用戶越需要1MB的空間
2000000個(gè)用戶則需要100M的空間】

2、京東618做活動(dòng)送禮物,大庫備貨多少個(gè)禮物?假設(shè)有2E用戶
1、對(duì)用戶做分類(分為僵尸用戶 冷熱用戶/忠誠用戶)
所以需要做活躍用戶統(tǒng)計(jì),
什么是活躍用戶:
比如說 1號(hào)-3號(hào) 連續(xù)登錄 對(duì)重復(fù)登錄的去重
redis如何做
首先在2022年1月1日id為1的用戶登錄了 給bit位的1位上設(shè)置1
在2022年1月2日id為1和id為7的用戶登錄了分別在bit位1和bit位7上設(shè)置1

總結(jié)

key的type類型,是用于判斷訪問的方法是不是具備這個(gè)類型的操作,可以快速返回錯(cuò)誤,可以規(guī)避
異常。
encoding是可以規(guī)避同一種type類型但是根據(jù)不同的表現(xiàn)形式做計(jì)算這件事,
還有l(wèi)ength屬性,如果數(shù)據(jù)未發(fā)生改變可以直接返回長度

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

相關(guān)文章

  • Redis的Python客戶端redis-py安裝使用說明文檔

    Redis的Python客戶端redis-py安裝使用說明文檔

    這篇文章主要介紹了Redis的Python客戶端redis-py安裝使用說明文檔,本文講解了安裝方法、入門使用實(shí)例、API參考和詳細(xì)說明,需要的朋友可以參考下
    2015-06-06
  • redis列表類型_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    redis列表類型_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了redis列表類型的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Redis 哨兵高模式搭建及Java代碼配置

    Redis 哨兵高模式搭建及Java代碼配置

    這篇文章主要介紹了Redis 哨兵高模式搭建及Java代碼配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 手把手教你使用redis實(shí)現(xiàn)排行榜功能

    手把手教你使用redis實(shí)現(xiàn)排行榜功能

    使用Redis中有序集合的特性來實(shí)現(xiàn)排行榜是又好又快的選擇,一般排行榜都是有實(shí)效性的,比如“用戶積分榜”,下面這篇文章主要給大家介紹了關(guān)于使用redis實(shí)現(xiàn)排行榜功能的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 淺談Redis哨兵模式高可用解決方案

    淺談Redis哨兵模式高可用解決方案

    Redis高可用有兩種模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主兩從三哨兵Redis高可用服務(wù),感興趣的可以了解一下
    2022-03-03
  • Redis遍歷所有key的兩個(gè)命令(KEYS 和 SCAN)

    Redis遍歷所有key的兩個(gè)命令(KEYS 和 SCAN)

    這篇文章主要介紹了Redis遍歷所有key的兩個(gè)命令(KEYS 和 SCAN),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Redis?的內(nèi)存淘汰策略和過期刪除策略的區(qū)別

    Redis?的內(nèi)存淘汰策略和過期刪除策略的區(qū)別

    這篇文章主要介紹了Redis?的內(nèi)存淘汰策略和過期刪除策略的區(qū)別,Redis?是可以對(duì)?key?設(shè)置過期時(shí)間的,因此需要有相應(yīng)的機(jī)制將已過期的鍵值對(duì)刪除,而做這個(gè)工作的就是過期鍵值刪除策略
    2022-07-07
  • Redis+IDEA實(shí)現(xiàn)單機(jī)鎖和分布式鎖的過程

    Redis+IDEA實(shí)現(xiàn)單機(jī)鎖和分布式鎖的過程

    這篇文章主要介紹了Redis+IDEA實(shí)現(xiàn)單機(jī)鎖和分布式鎖的過程,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 使用注解實(shí)現(xiàn)Redis緩存功能

    使用注解實(shí)現(xiàn)Redis緩存功能

    這篇文章主要為大家詳細(xì)介紹了使用注解實(shí)現(xiàn)Redis緩存功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Redisson延時(shí)隊(duì)列RedissonDelayed的具體使用

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

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

最新評(píng)論