[toc]
通過鏈表結構可以模仿隊列結構與堆棧結構;關于隊列結構和堆棧結構可以查看 [【SPL標準庫專題(6)】Datastructures:SplStack & SplQueue](https://segmentfault.com/a/1190000019210030)
## 增
lpush key value1 value2 value3...
作用: 把值插入到鏈表頭部
rpush key value1 value2 value3...
```
127.0.0.1:6379> rpush zimu a b c d e f
(integer) 6
```
作用: 把值插入到鏈接尾部
## 刪
rpop key
作用: 返回并刪除鏈表尾元素
lpop key
作用: 返回并刪除鏈表頭元素
lrem key count value
作用: 從key鏈表中刪除 value值
注: 刪除count的絕對值個value后結束
Count > 0 從表頭刪除
Count < 0 從表尾刪除
lrem key 2 b 從表頭開始找b,找到就給刪除,刪除2個;
lrem key -2 b 從表尾開始找b,找到就給刪除,刪除2個;
## 改
ltrim key start stop
作用: 剪切key對應的鏈表,切[start,stop]一段,并把該段重新賦給key
lindex key index
作用: 返回index索引上的值,
如 lindex key 2
llen key
作用:計算鏈接表的元素個數
linsert key after|before search value
作用: 在key鏈表中尋找'search',并在search值之前|之后,插入value
注: 一旦找到一個search后,命令就結束了,因此不會插入多個value
```
127.0.0.1:6379> linsert lb1 before c aa #在鏈表lb1的元素c前面插入aa
```
rpoplpush source dest
作用: 從鏈表source的尾部拿出,放在鏈表dest的頭部,并返回該單元值
場景: 雙鏈表完成安全隊列
業務邏輯:
1:Rpoplpush task bak
2:接收返回值,并做業務處理
3:如果成功,rpop bak 清除任務. 如不成功,下次從bak表里取任務
brpop/blpop key timeout
作用:等待彈出key的尾/頭元素,
Timeout為等待超時時間
如果timeout為0,則一直等待
場景: 長輪詢Ajax,在線聊天時,能夠用到
```
127.0.0.1:6379> brpop lb2 30 #30秒內監聽lb2隊列,一旦有插入新的隊列元素就馬上彈出,并返回相應信息;
1) "lb2"
2) "222"
(8.55s)
```
## 查
lrange key start stop
作用: 返回鏈表中[start ,stop]中的元素
規律: 左數從0開始,右數從-1開始
lrange key 0 -1 查出全部鏈表結構