redis 基本數據類型-列表(List)

今天不瘦給你們分享一下redis第二個基本數據類型:列表。若是你們瞭解基本數據結構,相信你們對列表不會陌生,好比在C語言中咱們能夠使用數組實現一個列表,也能夠使用鏈表實現一個列表(列表鏈表傻傻分不清楚,列表是一種抽象數據類型,鏈表爲一種實現方式)。redis

言歸正傳,那redis是怎麼實現列表的呢?答案是:雙端雙向無環鏈表(原諒我給起了一個這麼複雜的名字,也有人直接叫雙端鏈表)借用《redis設計與實現》中一圖數組

 

爲何這樣設計呢?主要有以下優勢:數據結構

  • 雙向:獲取前置節點和後置節點的時間複雜度都爲O(1)
  • 首尾兩個指針:從頭和尾取元素時間複雜度都爲O(1),從redis同時提供列表兩端的操做命令也獲得了印證(lpop和rpop等)
  • 無環: 有環鏈表會致使某些操做變複雜,且應用場景有侷限性
  • 長度計數器:使獲取列表長度的時間複雜度爲O(1),又是以空間換時間思想的體現

 

注意事項:設計

一個列表最多能夠包含 232 - 1 個元素3d

redis列表定義爲字符換列表,可是基於的雙端雙向循環列表並無限定每一個節點value的類型指針

 

參考:blog

《Redis設計與實現》 get

https://redis.io/topics/data-typesio

 

這裏是老瘦家的兒子,如需轉載請聲明,我替老瘦感謝你。循環

相關文章
相關標籤/搜索