四 redis常用資料型別 List

2021-08-08 04:12:13 字數 3985 閱讀 3149

redis中的list就是乙個有序的鍊錶。與普通鍊錶並無太大的差異,可以通過命令在左右進行插入取出操作。

(1)

命令:lpush key value [value …]

時間複雜度:o(1)

命令描述:在指定key所關聯的list value的頭部插入引數中給出的所有values。如果該key不存在,該命令將在插入之前建立乙個與該key關聯的空鍊錶,之後再將資料從鍊錶的頭部插入。如果該鍵的value不是鍊錶型別,該命令將返回相關的錯誤資訊。

返回值:插入後鍊錶中元素的數量。

(2)

命令:rpush key value [value …]

時間複雜度:o(1)

命令描述:在指定key所關聯的list value的尾部插入引數中給出的所有values。如果該key不存在,該命令將在插入之前建立乙個與該key關聯的空鍊錶,之後再將資料從鍊錶的尾部插入。如果該鍵的value不是鍊錶型別,該命令將返回相關的錯誤資訊。

返回值:插入後鍊錶中元素的數量。

(3)

命令:lpop key

時間複雜度:o(1)

命令描述:返回並彈出指定key關聯的鍊錶中的第乙個元素,即頭部元素,。如果該key不存,返回nil。

返回值:鍊錶頭部的元素。

(4)

命令:rpop key

時間複雜度:o(1)

命令描述:返回並彈出指定key關聯的鍊錶中的最後乙個元素,即尾部元素,。如果該key不存,返回nil。

返回值:鍊錶尾部的元素。

(5)

命令:lpushx key value

時間複雜度:o(1)

命令描述:僅有當引數中指定的key存在時,該命令才會在其所關聯的list value的頭部插入引數中給出的value,否則將不會有任何操作發生。

返回值:插入後鍊錶中元素的數量。

(6)

命令:rpushx key value

時間複雜度:o(1)

命令描述:僅有當引數中指定的key存在時,該命令才會在其所關聯的list value的尾部插入引數中給出的value,否則將不會有任何操作發生。

返回值:插入後鍊錶中元素的數量。

(7)

命令:lrange key start stop

時間複雜度:o(s+n)

命令描述:該命令的引數start和end都是0-based。即0表示鍊錶頭部(leftmost)的第乙個元素。其中start的值也可以為負值,-1將表示鍊錶中的最後乙個元素,即尾部元素,-2表示倒數第二個並以此類推。該命令在獲取元素時,start和end位置上的元素也會被取出。如果start的值大於鍊錶中元素的數量,空煉表將會被返回。如果end的值大於元素的數量,該命令則獲取從start(包括start)開始,鍊錶中剩餘的所有元素。

返回值:返回指定範圍內元素的列表。

(8)

命令:llen key

時間複雜度:o(1)

命令描述:返回指定key關聯的鍊錶中元素的數量,如果該key不存在,則返回0。如果與該key關聯的value的型別不是鍊錶,則返回相關的錯誤資訊。

返回值:鍊錶中元素的數量。

(9)

命令:lrem key count value

時間複雜度:o(n)

命令描述:在指定key關聯的鍊錶中,刪除前count個值等於value的元素。如果count大於0,從頭向尾遍歷並刪除,如果count小於0,則從尾向頭遍歷並刪除。如果count等於0,則刪除鍊錶中所有等於value的元素。如果指定的key不存在,則直接返回0。

返回值:返回被刪除的元素數量。

(10)

命令:lset key index value

時間複雜度:o(n)

命令描述:設定鍊錶中指定位置的值為新值,其中0表示第乙個元素,即頭部元素,-1表示尾部元素。如果索引值index超出了鍊錶中元素的數量範圍,該命令將返回相關的錯誤資訊。

(11)

命令:lindex key index

時間複雜度:o(n)

命令描述:該命令將返回鍊錶中指定位置(index)的元素,index是0-based,表示頭部元素,如果index為-1,表示尾部元素。如果與該key關聯的不是鍊錶,該命令將返回相關的錯誤資訊。

返回值:返回請求的元素,如果index超出範圍,則返回nil。

(12)

命令:ltrim key start stop

時間複雜度:o(n)

命令描述:n表示被刪除的元素數量。該命令將僅保留指定範圍內的元素,從而保證鏈結中的元素數量相對恆定。start和stop引數都是0-based,0表示頭部元素。和其他命令一樣,start和stop也可以為負值,-1表示尾部元素。如果start大於鍊錶的尾部,或start大於stop,該命令不錯報錯,而是返回乙個空的鍊錶,與此同時該key也將被刪除。如果stop大於元素的數量,則保留從start開始剩餘的所有元素。

(13)

命令:linsert key before|after pivot value

時間複雜度:o(n)

命令描述:該命令的功能是在pivot元素的前面或後面插入引數中的元素value。如果key不存在,該命令將不執行任何操作。如果與key關聯的value型別不是鍊錶,相關的錯誤資訊將被返回。

返回值:成功插入後鍊錶中元素的數量,如果沒有找到pivot,返回-1,如果key不存在,返回0。

(14)

命令:rpoplpush source destination

時間複雜度:o(1)

命令描述:原子性的從與source鍵關聯的鍊錶尾部彈出乙個元素,同時再將彈出的元素插入到與destination鍵關聯的鍊錶的頭部。如果source鍵不存在,該命令將返回nil,同時不再做任何其它的操作了。如果source和destination是同乙個鍵,則相當於原子性的將其關聯鍊錶中的尾部元素移到該鍊錶的頭部。

返回值:返回彈出和插入的元素。

(15)

命令:brpoplpush source destination timeout

時間複雜度:o(1)

命令描述:此命令是rpoplpush命令的阻塞版。當列表 source 為空時, brpoplpush 命令將阻塞連線,直到等待超時,或有另乙個客戶端對 source 執行 lpush 或 rpush 命令為止。

返回值:返回彈出和插入的元素。

(16)

命令:blpop key [key …] timeout

時間複雜度:o(1)

命令描述:blpop是lpop的阻塞版。當給定列表內沒有任何元素可供彈出的時候,連線將被 blpop 命令阻塞,直到等待超時或發現可彈出元素為止。當給定多個 key 引數時,按引數 key 的先後順序依次檢查各個列表,彈出第乙個非空列表的頭元素。不同的客戶端被放進乙個佇列中,按『先阻塞先服務』(first-blpop,first-served)的順序為 key 執行 blpop 命令。

(17)

命令:brpop key [key …] timeout

時間複雜度:o(1)

命令描述:brpop是rpop的阻塞版。詳情與blpop除了彈出位置不同以外,其他基本相同。

簡單歸納:

list的主要操作基本與鍊錶類似,歸納記憶為:

lpush rpush lpop rpop:從頭部尾部插入資料,彈出資料。

lpushx rpushx 插入資料的時候判斷key是否存在,如果不存在就不進行任何操作。

blpop brpop 阻塞的進行彈出操作。

lrange 獲取資料

llen 判斷資料量

lset lindex linsert ltrim lrm 對於鍊錶的簡單操作,設定啊,插入啊,索引啊,刪除啊等操作。

rpoplpush brpoplpush 從某list彈出資料並且push到另外的list。b..只是阻塞式的操作。

既然是鍊錶式的儲存操作,就一定會具有鍊錶的特性,插入刪除較快,索引較慢,所以此資料結構一般用於有序的資料儲存,以及可以用於訊息佇列。

**:

Redis四 Redis資料型別

redis是乙個高效能的資料結構伺服器,稱之為資料結構伺服器的原因是,它提供了豐富的資料型別以滿足不同的應用場景,本文對redis的資料型別以及對這些型別可能的操作進行總結。redis常用的資料型別包括string set list hash以及sorted set.redis本身是k v系統,這裡...

Redis常用資料型別

redis最為常用的資料型別主要有以下五種 string hash list set sorted set 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 string 常用命令 set,get,decr,incr,mget 等。應用場景 string是最常用的一種資料型別,普通的key...

redis常用資料型別

redis 特點 1.所有資料儲存在記憶體中,高速讀寫 2.提供豐富多樣的資料型別 string hash list set sorted set 3.提供了 aof 和 rdb 兩種資料的持久化儲存方式,保證了 redis 重啟後資料不丟失 4.redis 的所有操作都是原子性的,還支援對幾個操作...