Redis中的list命令怎么使用

58次阅读
没有评论

共计 3299 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章主要介绍“Redis 中的 list 命令怎么使用”,在日常操作中,相信很多人在 Redis 中的 list 命令怎么使用问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis 中的 list 命令怎么使用”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

list 的数据结构

List 类型是一个双端链表的结构,容量是 2 的 32 次方减 1 个元素,即 40 多亿个; 其主要功能有 push、pop、获取元素等; 一般应用在栈、队列、消息队列等场景。

Redis list 命令实战[l/r]push- 左 / 右添加元素

语法:[l/r]push key value [value …]

以头插或尾插方式插入指定 key 队列中一个或多个元素

127.0.0.1:6379  lpush pushkey 1 2 3
(integer) 3
127.0.0.1:6379  lpush pushkey 4
(integer) 4
127.0.0.1:6379  rpush pushkey 5
(integer) 5
127.0.0.1:6379  lrange pushkey 0 -1
1)  4 
2)  3 
3)  2 
4)  1 
5)  5

lrange- 查询范围元素

语法:lrange key start stop

获取列表指定范围内的元素

127.0.0.1:6379  lpush products 1 2 3
(integer) 3
127.0.0.1:6379  lpush products 4 5 6
(integer) 6
127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  5 
3)  4 
4)  3 
5)  2 
6)  1

linsert- 在某元素前后插入元素

语法:linsert key BEFORE|AFTER pivot value

在列表的元素前或者后插入元素

127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  5 
3)  4 
4)  3 
5)  2 
6)  1 
127.0.0.1:6379  linsert products before 5 a
(integer) 7
127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  5 
4)  4 
5)  3 
6)  2 
7)  1 
127.0.0.1:6379  linsert products after a b
(integer) 8
127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  b 
4)  5 
5)  4 
6)  3 
7)  2 
8)  1

llen- 获取长度

语法:llen  key

获取列表长度

127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  b 
4)  5 
5)  4 
6)  3 
7)  2 
8)  1 
127.0.0.1:6379  llen products
(integer) 8

lindex- 根据下标获取元素

语法:lindex key index

通过索引获取列表中的元素

127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  b 
4)  5 
5)  4 
6)  3 
7)  2 
8)  1 
127.0.0.1:6379  lindex products 2
 b

lset- 根据下标设置值

语法:lset key index value

通过索引设置列表元素的值

127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  b 
4)  5 
5)  4 
6)  3 
7)  2 
8)  1 
127.0.0.1:6379  lset products 2 B
127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  B 
4)  5 
5)  4 
6)  3 
7)  2 
8)  1

ltrim- 截取元素

语法:ltrim key start end

截取队列指定区间的元素, 其余元素都删除

127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  B 
4)  5 
5)  4 
6)  3 
7)  2 
8)  1 
127.0.0.1:6379  ltrim products 0 3
127.0.0.1:6379  lrange products 0 -1
1)  6 
2)  a 
3)  B 
4)  5

lrem- 移除元素

语法:lrem key count value

移除列表元素

127.0.0.1:6379  lpush test a 1 a 2 a 3 a 4 5 6
(integer) 10
127.0.0.1:6379  lrange test 0 -1
 1)  6 
 2)  5 
 3)  4 
 4)  a 
 5)  3 
 6)  a 
 7)  2 
 8)  a 
 9)  1 
10)  a 
127.0.0.1:6379  lrem test 3 a
(integer) 4
127.0.0.1:6379  lrange test 0 -1
1)  6 
2)  5 
3)  4 
4)  3 
5)  2 
6)  1 
7)  a

[l/r]pop- 从左 / 右弹出元素

语法:[l/r]pop key

从队列的头或尾弹出节点元素(返回该元素并从队列中删除)

127.0.0.1:6379  lrange test 0 -1
1)  6 
2)  5 
3)  4 
4)  3 
5)  2 
6)  1 
127.0.0.1:6379  lpop test
127.0.0.1:6379  lrange test 0 -1
1)  5 
2)  4 
3)  3 
4)  2 
5)  1 
127.0.0.1:6379  rpop test
127.0.0.1:6379  lrange test 0 -1
1)  5 
2)  4 
3)  3 
4)  2

rpoplpush- 移除右元素添加到另一列表左

语法:rpoplpush source destination

移除列表的最后一个元素 (右),并将该元素添加到另一个列表(左) 并返回

127.0.0.1:6379  lpush src 1 2 3
(integer) 3
127.0.0.1:6379  lrange src 0 -1
1)  3 
2)  2 
3)  1 
127.0.0.1:6379  lpush dst a b c
(integer) 3
127.0.0.1:6379  lrange dst 0 -1
1)  c 
2)  b 
3)  a 
127.0.0.1:6379  rpoplpush src dst
127.0.0.1:6379  lrange src 0 -1
1)  3 
2)  2 
127.0.0.1:6379  lrange dst 0 -1
1)  1 
2)  c 
3)  b 
4)  a

b[l/r]pop- 阻塞弹出左 / 右一个元素

语法:b[l/r]pop key1 [key2 …] timeout

移出并获取列表的第一个或最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

127.0.0.1:6379  lpush list1 1 2
(integer) 2
127.0.0.1:6379  lpush list2 a b
(integer) 2
127.0.0.1:6379  lrange list1 0 -1
1)  2 
2)  1 
127.0.0.1:6379  lrange list2 0 -1
1)  b 
2)  a 
127.0.0.1:6379  blpop list1 list2 10
1)  list1  # 弹出元素所属的列表
2)  2  # 弹出元素所属的值
127.0.0.1:6379  blpop list1 list2 10
1)  list1 
2)  1 
127.0.0.1:6379  blpop list1 list2 10
1)  list2 
2)  b 
127.0.0.1:6379  blpop list1 list2 10
1)  list2 
2)  a 
127.0.0.1:6379  blpop list1 list2 10
(nil)
(10.08s) #  列表为空的时候,就等待超时 10 秒

到此,关于“Redis 中的 list 命令怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计3299字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)