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...