redis資料型別 lists

2022-09-08 07:27:11 字數 3410 閱讀 3794

redis的list型別其實就是乙個每個子元素都是string型別的雙向鍊錶。

我們可以通過push,pop操作從鍊錶的頭部或者尾部新增刪除元素,這樣list即可以作為

棧,又可以作為佇列。

lpush方法:從頭部新增字串元素

lrange方法:從list中取資料,從頭部取

127.0.01:6379> lpush list1 "hello" "word"

(integer) 2

127.0.01:6379> lrange list1 0 -1

1) "word"

2) "hello"

rpush方法:從尾部壓入

127.0.01:6379> rpush list2 "hello" "word"

(integer) 2

127.0.01:6379> lrange list2 0 -1

1) "hello"

2) "word"

linsert方法:在指定鍵的list的指定元素前或者後插入

127.0.01:6379> rpush list2 "hello" "word"

(integer) 2

127.0.01:6379> lrange list2 0 -1

1) "hello"

2) "word"

127.0.01:6379> linsert list2 before "word" "in"

(integer) 3

127.0.01:6379> lrange list2 0 -1

1) "hello"

2) "in"

3) "word"

lset方法:設定list指定下標的元素值

127.0.01:6379> lpush list3 one two three

(integer) 3

127.0.01:6379> lrange list3 0  -1

1) "three"

2) "two"

3) "one"

127.0.01:6379> lset list3 0 onechange

ok127.0.01:6379> lrange list3 0  -1

1) "onechange"

2) "two"

3) "one"

lrem方法:從key對應list中刪除n個和value相同的元素。返回刪除掉的個數

(n<0從尾部刪除,n=0全部刪除)

127.0.01:6379> rpush list2 "one" "one" "one"

(integer) 6

127.0.01:6379> lrange list2 0  -1

1) "hello"

2) "in"

3) "word"

4) "one"

5) "one"

6) "one"

127.0.01:6379> lrem list2 2 "one"

(integer) 2

127.0.01:6379> lrange list2 0  -1

1) "hello"

2) "in"

3) "word"

4) "one"

127.0.01:6379> lrem list2 1 "one"

(integer) 1

127.0.01:6379> lrange list2 0  -1

1) "hello"

2) "in"

3) "word"

127.0.01:6379> lrem list2 1 "one"

(integer) 0

ltrim方法:保留key對應list的指定範圍的資料

127.0.01:6379> rpush list5 "one" "two" "three" "four"

(integer) 4

127.0.01:6379> lrange list5 0 -1

1) "one"

2) "two"

3) "three"

4) "four"

127.0.01:6379> ltrim list5 1 2

ok127.0.01:6379> lrange list5 0 -1

1) "two"

2) "three"

lpop方法:從list頭部刪除元素,並返回刪除元素

rpop方法:從list的尾部刪除元素,並返回刪除元素

127.0.01:6379> rpush list6 "one" "two" "three"

(integer) 3

127.0.01:6379> lrange list6 0 -1

1) "one"

2) "two"

3) "three"

127.0.01:6379> rpop list6

"three"

127.0.01:6379> lpop list6

"one"

127.0.01:6379> lrange list6 0 -1

1) "two"

rpoplpush方法:從乙個list中移除尾部元素,將這個元素新增到另乙個list的頭部

127.0.01:6379> lrange list2 0 -1

1) "hello"

2) "in"

3) "word"

127.0.01:6379> lrange list3 0 -1

1) "onechange"

2) "two"

3) "one"

127.0.01:6379> rpoplpush list2 list3

"word"

127.0.01:6379> lrange list2 0 -1

1) "hello"

2) "in"

127.0.01:6379> lrange list3 0 -1

1) "word"

2) "onechange"

3) "two"

4) "one"

lindex方法:返回名稱為key的list中index位置的元素

127.0.01:6379> lrange list3 0 -1

1) "word"

2) "onechange"

3) "two"

4) "one"

127.0.01:6379> lindex list3 2

"two"

llen方法:返回key對應的list的長度

127.0.01:6379> lrange list3 0 -1

1) "word"

2) "onechange"

3) "two"

4) "one"

127.0.01:6379> llen list3

(integer) 4

Redis五大資料型別之Lists

鍊錶提供了高效的節點重排能力,以及順序性的節點訪問方式,並且可以通過增刪節點來靈活地調整鍊錶的長度。因為redis使用的c語言沒有內建這種資料結構,所以redis構建了自己的的鍊錶實現。鍊錶在redis中應用非常廣泛,比如列表鍵的底層實現之一就是鍊錶。當乙個列表鍵包含了數量較多的的元素,又或者列表中...

redis資料結構 lists

redis的另乙個重要的資料結構叫做lists,翻譯成中文叫做 列表 首先要明確一點,redis中的lists在底層實現上並不是陣列,而是鍊錶,也就是說對於乙個具有上百萬個元素的lists來說,在頭部和尾部插入乙個新元素,其時間複雜度是常數級別的,比如用lpush在10個元素的lists頭部插入新元...

redis資料型別

redis對比與memcached 最大的優勢就是支援更多靈活的資料結構,豐富的資料操作 redis現支援的資料型別有 字串,列表,集合,雜湊,有序集合 1.字串 普通資料型別 2.列表 簡單的字串列表,按照插入順序排序。你可以新增乙個元素到列表的頭部 左邊 或者尾部 右邊 適用於 對資料頭尾操作頻...