redis資料結構 lists

2022-07-10 11:57:11 字數 1819 閱讀 4614

redis的另乙個重要的資料結構叫做lists,翻譯成中文叫做「列表」。

首先要明確一點,redis中的lists在底層實現上並不是陣列,而是鍊錶,也就是說對於乙個具有上百萬個元素的lists來說,在頭部和尾部插入乙個新元素,其時間複雜度是常數級別的,比如用lpush在10個元素的lists頭部插入新元素,和在上千萬元素的lists頭部插入新元素的速度應該是相同的。

雖然lists有這樣的優勢,但同樣有其弊端,那就是,鏈表型lists的元素定位會比較慢,而陣列型lists的元素定位就會快得多。

lists的常用操作包括lpush、rpush、lrange等。我們可以用lpush在lists的左側插入乙個新元素,用rpush在lists的右側插入乙個新元素,用lrange命令從lists中指定乙個範圍來提取元素。我們來看幾個例子:

**如下:

//新建乙個list叫做mylist,並在列表頭部插入元素"1"

127.0.0.1:6379> lpush mylist "1"

//返回當前mylist中的元素個數

(integer) 1

//在mylist右側插入元素"2"

127.0.0.1:6379> rpush mylist "2"

(integer) 2

//在mylist左側插入元素"0"

127.0.0.1:6379> lpush mylist "0"

(integer) 3

//列出mylist中從編號0到編號1的元素

127.0.0.1:6379> lrange mylist 0 1

"0""1"

//列出mylist中從編號0到倒數第乙個元素

127.0.0.1:6379> lrange mylist 0 -1

"0""1"

"2"lists的應用相當廣泛,隨便舉幾個例子:

redis的另乙個重要的資料結構叫做lists,翻譯成中文叫做「列表」。

首先要明確一點,redis中的lists在底層實現上並不是陣列,而是鍊錶,也就是說對於乙個具有上百萬個元素的lists來說,在頭部和尾部插入乙個新元素,其時間複雜度是常數級別的,比如用lpush在10個元素的lists頭部插入新元素,和在上千萬元素的lists頭部插入新元素的速度應該是相同的。

雖然lists有這樣的優勢,但同樣有其弊端,那就是,鏈表型lists的元素定位會比較慢,而陣列型lists的元素定位就會快得多。

lists的常用操作包括lpush、rpush、lrange等。我們可以用lpush在lists的左側插入乙個新元素,用rpush在lists的右側插入乙個新元素,用lrange命令從lists中指定乙個範圍來提取元素。我們來看幾個例子:

**如下:

//新建乙個list叫做mylist,並在列表頭部插入元素"1"

127.0.0.1:6379> lpush mylist "1"

//返回當前mylist中的元素個數

(integer) 1

//在mylist右側插入元素"2"

127.0.0.1:6379> rpush mylist "2"

(integer) 2

//在mylist左側插入元素"0"

127.0.0.1:6379> lpush mylist "0"

(integer) 3

//列出mylist中從編號0到編號1的元素

127.0.0.1:6379> lrange mylist 0 1

"0""1"

//列出mylist中從編號0到倒數第乙個元素

127.0.0.1:6379> lrange mylist 0 -1

"0""1"

"2"lists的應用相當廣泛,隨便舉幾個例子:

redis資料型別 lists

redis的list型別其實就是乙個每個子元素都是string型別的雙向鍊錶。我們可以通過push,pop操作從鍊錶的頭部或者尾部新增刪除元素,這樣list即可以作為 棧,又可以作為佇列。lpush方法 從頭部新增字串元素 lrange方法 從list中取資料,從頭部取 127.0.01 6379 ...

Redis資料結構

字典 dict 是redis裡最核心的資料結構,正如其全稱remote dictionary service所說,redis其實就是乙個字典服務,字典以key value的形式呈現給使用者,key是簡單的字串,而value可以是各種資料結構,比如字串 string 鍊錶 list 集合 set 排序...

Redis 資料結構

最近接觸到了redis的使用,借這個機會深入的了解一下redis的實現和設計原理。下面先介紹一下redis底層所用到的資料結構。redis的實現幾乎都是基於下面的幾個資料結構之上的。struct sdshdr struct listnode struct list struct dictentry ...