Redis中的list命令怎么使用

网友投稿 217 2023-12-07

Redis中的list命令怎么使用

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

list的数据结构

Redis中的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 OK 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 OK 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 "6" 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 "1" 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 "1" 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命令怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库中alter system switch logfile和alter system archive log current的区别有哪些
下一篇:postgresq入库工具pgbulkloader怎么用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~