亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解redis數(shù)據(jù)結(jié)構(gòu)之壓縮列表

 更新時(shí)間:2017年05月14日 16:59:21   投稿:lqh  
這篇文章主要介紹了詳解redis數(shù)據(jù)結(jié)構(gòu)之壓縮列表的相關(guān)資料,壓縮列表在redis中的結(jié)構(gòu)體名稱為ziplist,其是redis為了節(jié)約內(nèi)存而聲明的一種數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下

 詳解redis數(shù)據(jù)結(jié)構(gòu)之壓縮列表

redis使用壓縮列表作為列表鍵和哈希鍵的底層實(shí)現(xiàn)之一。當(dāng)一個(gè)列表鍵只包含少量的列表項(xiàng),并且每個(gè)列表項(xiàng)都是由小整數(shù)值或者是短字符串組成,那么redis就會(huì)使用壓縮列表存儲(chǔ)列表項(xiàng);同理,當(dāng)一個(gè)哈希表包含的鍵值對(duì)都是由小整數(shù)值或者是短字符串組成,并且存儲(chǔ)的鍵值對(duì)數(shù)目不多時(shí),redis也會(huì)使用壓縮列表來(lái)存儲(chǔ)哈希表。以下是壓縮列表存儲(chǔ)結(jié)構(gòu):

 

  • zlbytes長(zhǎng)度為4個(gè)字節(jié),記錄了整個(gè)壓縮列表所占用的字節(jié)數(shù)
  • zltail長(zhǎng)度為4個(gè)字節(jié),記錄了壓縮列表起始位置到壓縮列表尾節(jié)點(diǎn)的偏移量
  • zllen長(zhǎng)度為2個(gè)字節(jié),記錄了當(dāng)前壓縮列表中所擁有的entry的數(shù)量
  • entryX存儲(chǔ)了實(shí)際的對(duì)象,其長(zhǎng)度根據(jù)具體的實(shí)體而定
  • zlend長(zhǎng)度為1個(gè)字節(jié),保存了十進(jìn)制的255,用于標(biāo)記壓縮列表的末端

      通過(guò)上面的結(jié)構(gòu)可以看出,壓縮列表存儲(chǔ)數(shù)據(jù)的為一整個(gè)數(shù)組,在這個(gè)數(shù)組中前12個(gè)字節(jié)固定保存了zlbytes、zltail和zllen三個(gè)表征整個(gè)壓縮列表屬性的數(shù)據(jù),而后續(xù)的數(shù)組則保存了entry的數(shù)組,最后通過(guò)一個(gè)字節(jié)長(zhǎng)度的屬性zlend來(lái)記錄當(dāng)前壓縮列表已經(jīng)結(jié)束。

      在上述結(jié)構(gòu)中,我們并沒(méi)有看到任何屬性用以表征每個(gè)entry的長(zhǎng)度及其存儲(chǔ)的數(shù)據(jù)類型,如字符串或者是整型值,而壓縮列表整體其實(shí)是一個(gè)數(shù)組,因而如果不對(duì)這兩個(gè)類型的數(shù)據(jù)進(jìn)行記錄那么將無(wú)法對(duì)每一個(gè)entry進(jìn)行區(qū)分。實(shí)際上,每個(gè)entry是由三部分組成:previous_entry_length、encoding和content。

1.previous_entry_length為一個(gè)整型值,記錄了前一個(gè)節(jié)點(diǎn)整體占用字節(jié)的長(zhǎng)度,當(dāng)前一個(gè)節(jié)點(diǎn)的長(zhǎng)度小于254時(shí),該屬性占用一個(gè)字節(jié),當(dāng)前一個(gè)節(jié)點(diǎn)長(zhǎng)度大于等于254時(shí),該屬性則占用5個(gè)字節(jié),其第一個(gè)字節(jié)會(huì)保存十進(jìn)制的0xFE,即十進(jìn)制的254,后四個(gè)字節(jié)則保存了前一節(jié)點(diǎn)的長(zhǎng)度;

2.encoding屬性長(zhǎng)度不定,其主要保存了當(dāng)前節(jié)點(diǎn)的編碼格式和節(jié)點(diǎn)的長(zhǎng)度。當(dāng)encoding屬性的最高兩位為00、01或10時(shí),表示其存儲(chǔ)的是字節(jié)數(shù)組。其為00時(shí),encoding占用1個(gè)字節(jié),其后6位保存了content屬性的長(zhǎng)度;為01時(shí),encoding占用2個(gè)字節(jié),其后14位保存了content屬性的長(zhǎng)度;為10時(shí),則其后38位保存了content屬性的長(zhǎng)度。當(dāng)encoding屬性的最高兩位為11時(shí),表示其存儲(chǔ)的是一個(gè)整型值,并且此時(shí)encoding屬性的長(zhǎng)度為1個(gè)字節(jié)。當(dāng)11后兩位,也即第三位和第四位為00時(shí),表示存儲(chǔ)的是int16_t類型的整數(shù),當(dāng)其為01時(shí),表示存儲(chǔ)的是int32_t類型的整數(shù),當(dāng)其為10時(shí),表示存儲(chǔ)的是int64_t類型的整數(shù),當(dāng)其為11時(shí),表示存儲(chǔ)的是24位有符號(hào)整數(shù)。(這四種情況后續(xù)位上的值都為0)當(dāng)11后五位為1,并且最后一位為0時(shí),表示存儲(chǔ)的是8位有符號(hào)整數(shù)。當(dāng)11后兩位為11時(shí),那么該節(jié)點(diǎn)就沒(méi)有content屬性,該節(jié)點(diǎn)的屬性值保存在encoding屬性的后四個(gè)位上,并且其值要介于0~12之間。

3.content屬性保存了該節(jié)點(diǎn)的實(shí)際的字符串或整型數(shù)據(jù)。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 關(guān)于Redis持久化的深入探究

    關(guān)于Redis持久化的深入探究

    Redis持久化是將內(nèi)存中的數(shù)據(jù)保存到磁盤,以防止數(shù)據(jù)丟失。Redis提供了兩種持久化方式:RDB和AOF,本文將給大家詳解介紹Redis持久化,感興趣的同學(xué)可以跟著小編一起來(lái)學(xué)習(xí)
    2023-05-05
  • Redis數(shù)據(jù)結(jié)構(gòu)原理淺析

    Redis數(shù)據(jù)結(jié)構(gòu)原理淺析

    這篇文章主要為大家介紹了Redis數(shù)據(jù)結(jié)構(gòu)原理淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Redis教程之代理ip池設(shè)計(jì)方法詳解

    Redis教程之代理ip池設(shè)計(jì)方法詳解

    這篇文章主要介紹了Redis實(shí)現(xiàn)代理ip池的設(shè)計(jì)方法,文中給出了詳細(xì)的介紹與示例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2017-01-01
  • Redis為什么快如何實(shí)現(xiàn)高可用及持久化

    Redis為什么快如何實(shí)現(xiàn)高可用及持久化

    這篇文章主要介紹了Redis為什么快如何實(shí)現(xiàn)高可用及持久化,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Redis源碼閱讀:Redis字符串SDS詳解

    Redis源碼閱讀:Redis字符串SDS詳解

    這篇文章主要介紹了Redis源碼閱讀:Redis字符串SDS,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • redis啟動(dòng)報(bào)錯(cuò)Can‘t?open?the?log?file:?No?such?file?or?directory

    redis啟動(dòng)報(bào)錯(cuò)Can‘t?open?the?log?file:?No?such?file?or?d

    這篇文章主要介紹了redis啟動(dòng)報(bào)錯(cuò)Can‘t?open?the?log?file:?No?such?file?or?directory問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • redis單節(jié)點(diǎn)安裝與配置方式

    redis單節(jié)點(diǎn)安裝與配置方式

    這篇文章主要介紹了redis單節(jié)點(diǎn)安裝與配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解Redis如何處理Hash沖突

    詳解Redis如何處理Hash沖突

    在 Redis 中,哈希表是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),通常用于存儲(chǔ)對(duì)象的屬性,對(duì)于哈希表,最常遇到的是哈希沖突,那么,當(dāng) Redis遇到Hash沖突會(huì)如何處理?本文我們將詳細(xì)介紹Redis如何處理哈希沖突,需要的朋友可以參考下
    2024-09-09
  • Redis概述及l(fā)inux安裝redis的詳細(xì)教程

    Redis概述及l(fā)inux安裝redis的詳細(xì)教程

    這篇文章主要介紹了Redis概述及l(fā)inux安裝redis的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 使用Ruby腳本部署Redis Cluster集群步驟講解

    使用Ruby腳本部署Redis Cluster集群步驟講解

    今天小編就為大家分享一篇關(guān)于使用Ruby腳本部署Redis Cluster集群步驟講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01

最新評(píng)論