link 鍊錶操作

2021-09-22 07:42:05 字數 2331 閱讀 3084

link 鍊錶結構

之前是操作字串string

鍊錶:頭元素,後面乙個乙個的指向後面的元素。redis內部實現了鍊錶的結構。鍊錶的頭尾,從乙個元素找到另外的元素。

鍊錶的名字也是乙個key。

flushdb:則資料全部沒了。

lpush

keyvalue

作用: 把值插入到鏈結頭部

r1:0

>

lpush chars "a"

r1:0

>

rpush chars b

r1:0

>

rpush chars c

r1:0

>lpush chars 0

r1:0

>

lpush ls p q r s t "21

"r1:

0>lrange chars 121

) "a"

2) "b"

r1:0

>lrange chars 0-1

//檢視全部

1) "0"2

) "a"

3) "b"

4) "c"

r1:0

>

lpop chars

"a"r1:

0>

rpop chars

"c"

rpop key

作用: 返回並刪除鍊錶尾元素,從右邊刪除。

rpush,lpop: 不解釋

lrange

keystart stop

作用: 返回鍊錶中

[start ,stop

]中的元素

規律: 左數從0開始,右數從

-1開始

lrem

keycount

value

作用: 從key鍊錶中刪除 value值

注: 刪除count的絕對值個value後結束

count

>

0從表頭刪除

count

<

0從表尾刪除

r1:0

>lrem ls 2 p //

刪除值為p的並且只刪除2個"1

"ltrim

keystart stop

作用: 剪下key對應的鏈結,切

[start,stop

]一段,並把該段重新賦給key

r1:0

>

ltrim ls 1

3"ok"

lindex

keyindex

作用: 返回index索引上的值,

如 lindex

key2

llen

key作用:計算鏈結表的元素個數

redis

127.0.0.1:6379

>

llen task

(integer) 3

redis

127.0.0.1:6379

>

linsert

key after|

before search value

作用: 在key鍊錶中尋找』search』,並在search值之前

|之後,.插入value

注: 一旦找到乙個search後,命令就結束了,因此不會插入多個value

r1:0

>linsert ls after g1 g2 //

找到多個g1也只插入一次,不會插入多個,"20

"rpoplpush source dest

//右邊彈出左邊塞入,一次拿出來乙個,乙個越來越少乙個越來越多

作用: 把source的尾部拿出,放在dest的頭部,

並返回 該單元值

場景: task

+bak 雙鏈表完成安全佇列

task列表 bak列表

業務邏輯:

對task裡面的人進行update操作,如果update失敗還可以從bak裡獲取重新update,

1:rpoplpush task bak

2:接收返回值,並做業務處理

3:如果成功,rpop bak 清除任務. 如不成功,下次從bak表裡取任務

brpop ,blpop

keytimeout

作用:等待彈出key的尾

/頭元素,

如果為空了就不能夠rpop和lpop了,這裡可以一直等著,直到有內容就繼續pop。

timeout為等待超時時間

如果timeout為0,則一直等待

鍊錶《Link》

鍊錶 link 使用線性表的不足之處 1.如果長度不確定,使用線性表時,會很不方便,運算效率比較低。3.當為乙個線性表分配儲存空間時,如果儲存空間滿的話,再次插入資料的話,會造成 上溢 錯誤。這上面的三個不足,在鍊錶中都可以得到解決。在鏈式儲存方式中,要求每個節點由兩部分組成 一部分用於存放資料元素...

redis03 link 鍊錶操作

link 鍊錶結構 之前是操作字串string 鍊錶 頭元素,後面乙個乙個的指向後面的元素。redis內部實現了鍊錶的結構。鍊錶的頭尾,從乙個元素找到另外的元素。鍊錶的名字也是乙個key。flushdb 則資料全部沒了。lpush keyvalue 作用 把值插入到鏈結頭部 r1 0 lpush c...

理論小知識 link鍊錶 lpush

lpush key value value 將乙個或多個值 value 插入到列表 key 的表頭 l指left 如果有多個 value 值,那麼各個 value 值按從左到右的順序依次插入到表頭 如說,對空列表 mylist 執行命令 lpush mylist a b c 列表的值將是 c b a...