redis基本操作 —— list[亲测有效]

redis基本操作 —— list[亲测有效]一、将一个或多个值插入到列表头部 命令:lpush 格式:lpush key value1 [value2] … 127.0.0.1:6379> lpush list_key 1 (inte

redis基本操作 —— list

一、将一个或多个值插入到列表头部

  命令:lpush

  格式:lpush key value1 [value2] …

127.0.0.1:6379> lpush list_key 1
(integer) 1
127.0.0.1:6379> lpush list_key 2 3 4
(integer) 4

代码100分

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

  命令:lrange

  格式:lrange key begin_index end_index

代码100分127.0.0.1:6379> lpush list_key 1
(integer) 1
127.0.0.1:6379> lpush list_key 2 3 4
(integer) 4
127.0.0.1:6379> lrange list_key 0 1
1) "4"
2) "3"
127.0.0.1:6379> lrange list_key 0 0
1) "4"
127.0.0.1:6379> lrange list_key 2 3
1) "2"
2) "1"
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "3"
3) "2"
4) "1"

三、将一个值插入到已存在的列表头部

  命令:lpushx

  格式:lpushx key value

127.0.0.1:6379> del list_key
(integer) 1
127.0.0.1:6379> lrange list_key 0 10
(empty list or set)
127.0.0.1:6379> lpushx list_key 1
(integer) 0
127.0.0.1:6379> lrange list_key 0 10
(empty list or set)
127.0.0.1:6379> lpush list_key 1
(integer) 1
127.0.0.1:6379> lrange list_key 0 10
1) "1"
127.0.0.1:6379> lpushx list_key 2
(integer) 2
127.0.0.1:6379> lrange list_key 0 10
1) "2"
2) "1"

四、将一个或多个值插入到列表尾部

  命令:rpush

  格式:rpush key value1 [value2] …

代码100分127.0.0.1:6379> lrange list_key 0 10
1) "2"
2) "1"
127.0.0.1:6379> lpush list_key 3
(integer) 3
127.0.0.1:6379> lrange list_key 0 10
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> rpush list_key 4
(integer) 4
127.0.0.1:6379> lrange list_key 0 10
1) "3"
2) "2"
3) "1"
4) "4"

五、将一个值插入到已存在的列表尾部

  命令:rpushx

  格式:rpushx key value

127.0.0.1:6379> del list_key
(integer) 1
127.0.0.1:6379> lrange list_key 0 10
(empty list or set)
127.0.0.1:6379> rpushx list_key 1
(integer) 0
127.0.0.1:6379> lrange list_key 0 10
(empty list or set)
127.0.0.1:6379> rpush list_key 1
(integer) 1
127.0.0.1:6379> lrange list_key 0 10
1) "1"
127.0.0.1:6379> rpushx list_key 2
(integer) 2
127.0.0.1:6379> lrange list_key 0 10
1) "1"
2) "2"

六、移出并获取列表的第一个元素

  命令:lpop

  格式:lpop key

127.0.0.1:6379> del list_key
(integer) 1
127.0.0.1:6379> lpush list_key 1 2 3 4 5 
(integer) 5
127.0.0.1:6379> lrange list_key 0 10
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lpop list_key
"5"
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "3"
3) "2"
4) "1"

七、移出并获取列表的最后一个元素

  命令:rpop

  格式:rpop key

127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> rpop list_key
"1"
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "3"
3) "2"

八、获取列表长度

  命令:llen

  格式:llen key

127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> llen list_key
(integer) 3
127.0.0.1:6379> lpush list_key 5 6 7 
(integer) 6
127.0.0.1:6379> lrange list_key 0 10
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
127.0.0.1:6379> llen list_key
(integer) 6

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

  命令:lindex

  格式:lindex key index

127.0.0.1:6379> lrange list_key 0 10
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
127.0.0.1:6379> lindex list_key 4
"3"
127.0.0.1:6379> lindex list_key 0
"7"
127.0.0.1:6379> lindex list_key 7
(nil)
127.0.0.1:6379> lindex list_key 6
(nil)
127.0.0.1:6379> lindex list_key 5
"2"

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

  命令:blpop

  格式:blpop key1 [key2] timeout

对于有元素的list:

127.0.0.1:6379> lpush l1 1 2 3 4
(integer) 4
127.0.0.1:6379> lpush l2 a b c d
(integer) 4
127.0.0.1:6379> lrange l1 0 10
1) "4"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lrange l2 0 10
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> blpop l1 l2 1
1) "l1"
2) "4"
127.0.0.1:6379> blpop l1 l2 1
1) "l1"
2) "3"
127.0.0.1:6379> blpop l1 l2 1
1) "l1"
2) "2"
127.0.0.1:6379> blpop l1 l2 1
1) "l1"
2) "1"
127.0.0.1:6379> blpop l1 l2 1
1) "l2"
2) "d"
127.0.0.1:6379> blpop l1 l2 1
1) "l2"
2) "c"
127.0.0.1:6379> blpop l1 l2 1
1) "l2"
2) "b"
127.0.0.1:6379> blpop l1 l2 1
1) "l2"
2) "a"
127.0.0.1:6379> blpop l1 l2 1
//1s后
(nil)
(1.05s)

对于无元素的list:

127.0.0.1:6379> blpop l1 l2 1
//1s后
(nil)
(1.06s)

127.0.0.1:6379> blpop l1 l2 10
//另一客户端调用 lpush l1 1
1) "l1"
2) "1"
(1.54s)

127.0.0.1:6379> blpop l1 l2 0
//一直等待

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

  命令:brpop

  格式:brpop key1 [key2] timeout

操作与blpop相同,此处略

十二、移除列表的最后一个元素,并将该元素添加到另一个列表并返回

  命令:rpoplpush

  格式:rpoplpush source target

127.0.0.1:6379> del l1 l2
(integer) 1
127.0.0.1:6379> lpush l1 1 2 3
(integer) 3
127.0.0.1:6379> lrange l1 0 10
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lrange l2 0 10
(empty list or set)
127.0.0.1:6379> rpoplpush l1 l2
"1"
127.0.0.1:6379> lrange l1 0 10
1) "3"
2) "2"
127.0.0.1:6379> lrange l2 0 10
1) "1"
127.0.0.1:6379> rpoplpush l1 l2
"2"
127.0.0.1:6379> rpoplpush l1 l2
"3"
127.0.0.1:6379> rpoplpush l1 l2
(nil)
127.0.0.1:6379> lrange l1 0 10
(empty list or set)
127.0.0.1:6379> lrange l2 0 10
1) "3"
2) "2"
3) "1"

十三、从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

  命令:brpoplpush

  格式:brpoplpush source target timeout

source有元素时:

127.0.0.1:6379> del l1 l2
(integer) 0
127.0.0.1:6379> lpush l1 1 2 3
(integer) 3
127.0.0.1:6379> lrange l1 0 10
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lrange l2 0 10
(empty list or set)
127.0.0.1:6379> brpoplpush l1 l2 1
"1"
127.0.0.1:6379> lrange l1 0 10
1) "3"
2) "2"
127.0.0.1:6379> lrange l2 0 10
1) "1"
127.0.0.1:6379> brpoplpush l1 l2 1
"2"
127.0.0.1:6379> brpoplpush l1 l2 1
"3"
127.0.0.1:6379> brpoplpush l1 l2 1
//1s后
(nil)
(1.06s)
127.0.0.1:6379> lrange l1 0 10
(empty list or set)
127.0.0.1:6379> lrange l2 0 10
1) "3"
2) "2"
3) "1"

source无元素时,与blpop brpop类似

十四、在列表的第一个指定元素pivot前或者后插入元素value

  命令:linsert

  格式:linsert key before|after pivot value

127.0.0.1:6379> lpush list_key 1 2 1 3 1 4
(integer) 6
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "1"  //第一个指定元素"1"
3) "3"
4) "1"
5) "2"
6) "1"
127.0.0.1:6379> linsert list_key after 1 5
(integer) 7
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "1"  //第一个指定元素"1"
3) "5"
4) "3"
5) "1"
6) "2"
7) "1"
127.0.0.1:6379> linsert list_key before 1 6
(integer) 8
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "6"
3) "1"  //第一个指定元素"1"
4) "5"
5) "3"
6) "1"
7) "2"
8) "1"

十五、从列表头部开始,移除count个指定元素value

  命令:lrem

  格式:lrem key count value

127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "6"
3) "1"
4) "5"
5) "3"
6) "1"
7) "2"
8) "1"
127.0.0.1:6379> lrem list_key 1 1
(integer) 1
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "6"
3) "5"
4) "3"
5) "1"
6) "2"
7) "1"
127.0.0.1:6379> lrem list_key 2 1
(integer) 2
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "6"
3) "5"
4) "3"
5) "2"
127.0.0.1:6379> lrem list_key 1 1
(integer) 0
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "6"
3) "5"
4) "3"
5) "2"

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

  命令:lset

  格式:lset key index value

127.0.0.1:6379> rpush list_key 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange list_key 0 10
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> lset list_key 0 10
OK
127.0.0.1:6379> lrange list_key 0 10
1) "10"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> lset list_key 3 10
OK
127.0.0.1:6379> lrange list_key 0 10
1) "10"
2) "2"
3) "3"
4) "10"
5) "5"

十七、对一个列表进行修剪,删除指定下标区间[start,stop]之外的元素

  命令:ltrim

  格式:ltrim key start stop

127.0.0.1:6379> del list_key
(integer) 1
127.0.0.1:6379> rpush list_key 1 2 3 4 5 6 7 8 9
(integer) 9
127.0.0.1:6379> lrange list_key 0 10
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
127.0.0.1:6379> ltrim list_key 3 6
OK
127.0.0.1:6379> lrange list_key 0 10
1) "4"
2) "5"
3) "6"
4) "7"

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8108.html

(0)
上一篇 2023-03-07
下一篇 2023-03-07

相关推荐

  • MYSQL事务篇(高级篇)[通俗易懂]

    MYSQL事务篇(高级篇)[通俗易懂]1.事务介绍: 一般是指要做的或所做的事情。 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性。 ACID是以

    2023-04-27
    155
  • [mysql]double/float/decimal「建议收藏」

    [mysql]double/float/decimal「建议收藏」[mysql]double/float/decimal double 可以有小数,虽然navicat里显示0,0 FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操…

    2022-12-15
    160
  • Elasticsearch 存储成本省 60%,稿定科技干货分享[亲测有效]

    Elasticsearch 存储成本省 60%,稿定科技干货分享[亲测有效]背景 稿定科技旗下稿定设计产品是一个聚焦商业设计的多场景在线设计平台,打破了软硬件间的技术限制,汇集创意内容与设计工具于一体,为不同场景下的设计需求提供优质的解决方案,满足图片、视频等全类型媒介的设计

    2023-04-25
    154
  • 如何使用Photoshop套索工具

    如何使用Photoshop套索工具Adobe Photoshop是一款功能强大的图像处理软件,它提供了许多工具来对图像进行编辑和处理。其中一个最实用的工具就是Photoshop的套索工具,这个工具可以让用户根据需要对图像进行选择和裁剪操作。在本文中,我们将深入探讨如何使用Photoshop的套索工具。

    2024-07-06
    38
  • 分布式 | DBLE 是如何实现视图的?[通俗易懂]

    分布式 | DBLE 是如何实现视图的?[通俗易懂]作者:苏仕祥 浩鲸科技 PaaS 组件团队成员,长期从事分库分表中间件的相关解决方案工作,热爱技术,乐于分享。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编…

    2023-02-17
    146
  • MySQL监控参数「终于解决」

    MySQL监控参数「终于解决」1.查看xx库所有表信息 参数详解 Name(表名称) Engine(存储引擎) Version(版本) Row_format(行格式。对于MyISAM引擎,这可能是Dynamic,Fixed或Com

    2023-04-20
    166
  • sqlDeveloper工具快速入门[亲测有效]

    sqlDeveloper工具快速入门[亲测有效]场景 我们在连接oracle数据库的时候 常用方式一般有以下三种: pl/sql deceloper navicat sqlDeveloper 其中, pl/sql developer是最经典的,也是

    2023-05-28
    157
  • MySQL延迟问题和数据刷盘策略[亲测有效]

    MySQL延迟问题和数据刷盘策略[亲测有效]一、MySQL复制流程 官方文档流程图如下: 1、绝对的延时,相对的同步 2、纯写操作,线上标准配置下,从库压力大于主库,最起码从库有relaylog的写入。 二、MySQL延迟问题分析 1、主库D…

    2023-03-03
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注