Redis 之list的使用

插入与弹出

命令行 作用及返回值
lpush 将一个或多个值 value 插入到列表 key 的表头如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头, 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误
lpop 移除并返回列表 key 的头元素。返回值:列表的头元素。 当 key 不存在时,返回 nil 。
rpush 将一个或多个值 value 插入到列表 key 的表尾(最右边)。如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾
rpop 移除并返回列表 key 的尾元素。
lrange 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。详情
127.0.0.1:6379> lpush mylist a b c d e f   # 从左插入,
(integer) 6
127.0.0.1:6379> lrange mylist 0 -1    # 查询
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
127.0.0.1:6379> rpush mylist2 a b c d e f   # 从右插入
(integer) 6
127.0.0.1:6379> lrange mylist2 0 -1    
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> lpop mylist     # 从左弹出
"f"
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> rpop mylist    # 从右弹出
"a"
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
复制代码

image.png

获取长度和移除

命令 作用及返回值
lrem 根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种:count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。count = 0 : 移除表中所有与 value 相等的值。
llen 返回列表 key 的长度。如果 key 不存在,则 key 被解释为一个空列表,返回 0 .如果 key 不是列表类型,返回一个错误。
lindex 返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。如果 key 不是列表类型,返回一个错误。
127.0.0.1:6379> lpush mylist a a b c d e  
(integer) 6
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "a"
127.0.0.1:6379> lrem mylist 1 b    # 移除一个b
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "a"
5) "a"
127.0.0.1:6379> lrem mylist 2 a   # 移除两个a
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1   
1) "e"
2) "d"
3) "c"
127.0.0.1:6379> llen mylist    # 获取list元素个数
(integer) 3
127.0.0.1:6379> lindex mylist 1   # 获取下标为1的的元素,从0开始
"d"
127.0.0.1:6379> 

复制代码

截取

命令 作用及返回值
ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
127.0.0.1:6379> rpush mylist a b c d e f g
(integer) 7
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"
127.0.0.1:6379> ltrim mylist 2 5     # 只保留指定区间内的元素
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "c"
2) "d"
3) "e"
4) "f"
127.0.0.1:6379> 
复制代码

组合命令

rpoplpush 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。 如果 source 不存在,值 nil 被返回,并且不执行其他动作。如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。
127.0.0.1:6379> rpush mylist  a b c d e f 
(integer) 6
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
127.0.0.1:6379> rpoplpush mylist mylist2   # 弹出当前列表到新列表
"f"
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> lrange mylist2 0 -1
1) "f"

复制代码

判断和指定位置设值

exists 若 key 存在,返回 1 ,否则返回 0 。
lset 将列表 key 下标为 index 的元素的值设置为 value 。当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
linsert 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。当 pivot 不存在于列表 key 时,不执行任何操作。当 key 不存在时, key 被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。
127.0.0.1:6379> exists myslit3
(integer) 0                # 不存在
127.0.0.1:6379> exists mylist
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> lset mylist 2 zz   # 将list中的下标为2的设置为zz
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "a"
2) "b"
3) "zz"
4) "d"
5) "e"
127.0.0.1:6379> rpush mylist3 kk
(integer) 1
127.0.0.1:6379> lrange mylist3 0 0
1) "kk"
127.0.0.1:6379> linsert mylist3 before kk bbb  # 在list的元素为kk的前面插入bbb
(integer) 2
127.0.0.1:6379> lrange mylist3 0 -1
1) "bbb"
2) "kk"
127.0.0.1:6379> linsert mylist3 after kk aaa   # 在list的元素为kk的后面插入aaa
(integer) 3
127.0.0.1:6379> lrange mylist3 0 -1
1) "bbb"
2) "kk"
3) "aaa"
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享