Skip to content

Latest commit

 

History

History
180 lines (155 loc) · 3.46 KB

04.链表类型操作.md

File metadata and controls

180 lines (155 loc) · 3.46 KB

lpush/rpush 在链表头/尾增加一个成员

lpush/rpush key value
# 在链表头/尾增加一个成员,返回链表成员的个数

# 示例
127.0.0.1:6379> lpush letters A
(integer) 1
127.0.0.1:6379> rpush letters B
(integer) 2
127.0.0.1:6379> rpush letters C
(integer) 3
127.0.0.1:6379> rpush letters D
(integer) 4

lrange 获取链表成员

lrange key start stop
# 返回链表中[start,stop]范围的成员
# 规律: 左数从0开始,右数从-1开始

# 示例
127.0.0.1:6379> lrange letters 0 -1
1) "A"
2) "B"
3) "C"
4) "D"
127.0.0.1:6379> lrange letters 1 2
1) "B"
2) "C"

lpop/rpop 弹出链表中头/尾的成员

lpop/rpop key
# 弹出链表中头/尾的成员

# 示例
127.0.0.1:6379> lrange letters 0 -1
1) "A"
2) "B"
3) "C"
4) "D"
127.0.0.1:6379> lpop letters
"A"
127.0.0.1:6379> rpop letters
"D"
127.0.0.1:6379> lrange letters 0 -1
1) "B"
2) "C"

lrem 删除链表成员

lrem key count value
# 从key链表中删除 value值
# 删除count的绝对值个value后结束
# count>0 从表头删除
# count<0 从表尾删除

# 示例
127.0.0.1:6379> rpush letters A B C D A B C D A B C D
(integer) 12
127.0.0.1:6379> lrem letters 2 A
(integer) 2
127.0.0.1:6379> lrange letters 0 -1
 1) "B"
 2) "C"
 3) "D"
 4) "B"
 5) "C"
 6) "D"
 7) "A"
 8) "B"
 9) "C"
10) "D"
127.0.0.1:6379> lrem letters -3 D
(integer) 3
127.0.0.1:6379> lrange letters 0 -1
1) "B"
2) "C"
3) "B"
4) "C"
5) "A"
6) "B"
7) "C"

lindex 获取链表索引对应的值

lindex key index
# 获取链表索引index对应的值

# 示例
127.0.0.1:6379> rpush letters A B C D
(integer) 4
127.0.0.1:6379> lindex letters 1
"B"
127.0.0.1:6379> lindex letters 2
"C"

llen key 获取链表成员个数

BASHllen key
# 获取链表成员个数

# 示例
127.0.0.1:6379> rpush letters A B C D
(integer) 4
127.0.0.1:6379> llen letters
(integer) 4

linsert 在链表中指定位置插入成员

linsert key after|before search value
# 在key链表中寻找"search",并在search值之前|之后插入value
# 如果没有找到,不插入值
# 如果找到一个search后,命令就结束了,因此不会插入多个value

# 示例
127.0.0.1:6379> rpush id 1 3 5 7
(integer) 4
127.0.0.1:6379> linsert id before 3 2
(integer) 5
127.0.0.1:6379> lrange id 0 -1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
127.0.0.1:6379> linsert id after 5 6
(integer) 6
127.0.0.1:6379> lrange id 0 -1
1) "1"
2) "2"
3) "3"
4) "5"
5) "6"
6) "7"

blpop/brpop 一直等待弹出头/尾成员

blpop/brpop key timeout
# 等待弹出key的头/尾成员
# Timeout为等待超时时间
# 如果timeout为0,则一直等待
# 应用s场景: 长轮询Ajax,在线聊天时,能够用到

# 示例
# 第一个终端操作:
127.0.0.1:6379> brpop chat 0
1) "chat"
2) "hello"
(40.97s)

# 第二个终端操作:
127.0.0.1:6379> rpush chat "hello"
(integer) 1