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

redis底層數(shù)據(jù)結構之ziplist實現(xiàn)詳解

 更新時間:2023年12月12日 09:29:34   作者:bug生產者  
這篇文章主要為大家介紹了redis底層數(shù)據(jù)結構之ziplist實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

ziplist實現(xiàn)

注意:我使用的版本是6.0.10,不同版本可能略有差別

ziplist又叫做壓縮列表,使用一段連續(xù)的內存來存儲數(shù)據(jù)的數(shù)據(jù)結構,redis為了節(jié)約內存而開發(fā)的,可以節(jié)省內存空間,其并不是以某種壓縮算法來進行壓縮存儲數(shù)據(jù),而是表示一組連續(xù)的內存空間使用

ziplist結構

<zlbytes> <zltail> <zllen> <entry> <entry> ... <entry> <zlend>

  • zlbytes 32位,4個字節(jié) ziplist總字節(jié)數(shù)
  • zltail 32位,4個字節(jié) 壓縮列表表尾距離起始位置有多少字節(jié),通過該偏移量,無需遍歷整個列表就可以確定表尾節(jié)點的地址
  • zllen 16位,2個字節(jié) 記錄壓縮列表節(jié)點數(shù)量,由于是16位,最大值為65535,超過的話需要遍歷整個ziplist才可以知道
  • entry 存儲的各個節(jié)點
  • zlend 8位,1個字節(jié) 表示ziplist結尾的特殊值

entry的結構

<prevlen> <encoding> <entry-data>

  • prevlen 上一個節(jié)點的長度,可以和當前的地址進行指針運算,找到上一個節(jié)點的起始地址
  • encoding 內容的編碼及長度
  • entry-data 字符串類型的值

由于這個特殊的結構構造,所以壓縮列表可以很快的從表尾向表頭遍歷操作

  • 根據(jù)zltail可以直接獲取到表尾節(jié)點
  • 指針指向表尾節(jié)點起始地址的指針,根據(jù)prevlen可以直接獲取到前一個節(jié)點的起始地址的指針
  • 一直向前一個節(jié)點遍歷,一直到頭節(jié)點

使用ziplist的數(shù)據(jù)類型

redis中hash、list、zset使用了ziplist結構存儲,但是存在了一些條件

hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# -5: max size: 64 Kb  <-- not recommended for normal workloads
# -4: max size: 32 Kb  <-- not recommended
# -3: max size: 16 Kb  <-- probably not recommended
# -2: max size: 8 Kb   <-- good
# -1: max size: 4 Kb   <-- good
list-max-ziplist-size -2
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

ziplist會比hash、list、zset中使用的底層結構節(jié)省內存,存儲越小的數(shù)據(jù),使用ziplist來進行數(shù)據(jù)壓縮可以得到更好的壓縮率,但是會造成額外的內存碎片率

以上就是redis底層數(shù)據(jù)結構之ziplist實現(xiàn)詳解的詳細內容,更多關于redis底層數(shù)據(jù)結構ziplist的資料請關注腳本之家其它相關文章!

相關文章

  • Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題

    Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題

    這篇文章主要介紹了Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • redis 數(shù)據(jù)刪除策略和逐出算法的問題小結

    redis 數(shù)據(jù)刪除策略和逐出算法的問題小結

    這篇文章主要介紹了redis 數(shù)據(jù)刪除策略和逐出算法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • redis-cli命令行工具的使用小結

    redis-cli命令行工具的使用小結

    redis-cli是Redis的命令行客戶端,支持多種參數(shù)用于連接、操作和管理Redis數(shù)據(jù)庫,本文給大家介紹redis-cli命令行工具的使用小結,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 通過 Redis 實現(xiàn) RPC 遠程方法調用(支持多種編程語言)

    通過 Redis 實現(xiàn) RPC 遠程方法調用(支持多種編程語言)

    這篇文章主要介紹了通過 Redis 實現(xiàn) RPC 遠程方法調用,支持多種編程語言,本文就以Ruby和Python為例,給出了實現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • Redis集群服務器的實現(xiàn)(圖文步驟)

    Redis集群服務器的實現(xiàn)(圖文步驟)

    本文介紹了Redis集群服務器的優(yōu)勢,為讀者提供了全面的Redis集群服務器知識和使用技巧,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 深入理解Redis BigKey

    深入理解Redis BigKey

    本文主要介紹了Redis中的BigKey問題及其處理方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • Redis中Lua腳本的使用場景示例分析

    Redis中Lua腳本的使用場景示例分析

    通過使用Lua腳本,可以在Redis中實現(xiàn)復雜邏輯和原子操作,如原子計數(shù)、條件更新、事務性操作、分布式鎖、批量處理、計數(shù)器與過期管理、條件刪除、數(shù)據(jù)聚合等,本文介紹了Redis中Lua腳本的幾種常見使用場景及其Java實現(xiàn)示例,為開發(fā)者提供了一個參考
    2024-11-11
  • 詳解Redis中key的命名規(guī)范和值的命名規(guī)范

    詳解Redis中key的命名規(guī)范和值的命名規(guī)范

    這篇文章主要介紹了詳解Redis中key的命名規(guī)范和值的命名規(guī)范,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • redis配置standAlone版的jedisPool示例

    redis配置standAlone版的jedisPool示例

    這篇文章主要為大家介紹了redis配置standAlone版的jedisPool示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 基于Redis實現(xiàn)延時隊列的優(yōu)化方案小結

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

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

最新評論