redis 列表 操作(四)

本文详细介绍了Redis中关于列表(List)的操作,包括LPUSH、LRANGE、BLPOP、BRPOPLPUSH、LINDEX、RPUSH、LINSERT、LLEN、LPOP、LPUSHX、LREM、LSET、LTRIM、RPOP和RPOPLPUSH等命令的用法,这些命令用于在列表的头部、尾部插入元素,获取指定区间内的元素,弹出元素,以及修改和修剪列表。
摘要由CSDN通过智能技术生成
  • LPUSH KEY_NAME VALUE1… VALUEN (将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。)
127.0.0.1:6379[1]> lpush users zrt lxt // 正常设置
(integer) 2
127.0.0.1:6379[1]> set mykey myvalue
OK
127.0.0.1:6379[1]> lpush mykey valone // 设置一个已存在且不为 列表 类型的key时会报错
(error) WRONGTYPE Operation against a key holding the wrong kind of value
  • LRANGE KEY_NAME START END (返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推)
127.0.0.1:6379[1]> lrange users 1 -1 // 获取列表中第二个到最后一个
1) "zrt"
127.0.0.1:6379[1]> lrange users 0 2 // 获取列表中第一个到第二个
1) "lxt"
2) "zrt"
127.0.0.1:6379[1]> lrange users 0 -1 // 获取列表中第一个到最后一个
1) "lxt"
2) "zrt"
  • BLPOP LIST1 LIST2 … LISTN TIMEOUT (移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止)
127.0.0.1:6379[1]> blpop users lxt 1 // 移除列表中的第一个元素
1) "users"
2) "lxt"
127.0.0.1:6379[1]> lrange users 0 -1
1) "zrt"
  • BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT (从列表中弹出第一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。)
127.0.0.1:6379[1]> brpoplpush users users_two 2 // 将从 users 中移除的值存储到 users_two 中
"zrt1"
127.0.0.1:6379[1]> lrange users_two 0 -1
1) "zrt1"
127.0.0.1:6379[1]> lrange users 0 -1
1) "zrt3"
2) "zrt2"
  • LINDEX KEY_NAME INDEX_POSITION (用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。)
127.0.0.1:6379[1]> lindex users -1 // 索引列表中最后一个
"zrt2"
127.0.0.1:6379[1]> lindex users 0 // 索引列表中第一个
"zrt3"
  • RPUSH KEY_NAME VALUE1…VALUEN (用于将一个或多个值插入到列表的尾部(最右边);如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误)
127.0.0.1:6379[1]> rpush newusers zrt lxt
(integer) 2
127.0.0.1:6379[1]> lrange newusers 0 -1
1) "zrt"
2) "lxt"
  • LINSERT key BEFORE|AFTER pivot value (用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作;当列表不存在时,被视为空列表,不执行任何操作;如果 key 不是列表类型,返回一个错误)
127.0.0.1:6379[1]> lrange newusers 0 -1 // 查看当前类别内容
1) "zrt"
2) "lxt"
127.0.0.1:6379[1]> linsert newusers before lxt zrt0 // 在 lxt 之前加入 zrt0
(integer) 3
127.0.0.1:6379[1]> lrange newusers 0 -1 // 查看当前类别内容
1) "zrt"
2) "zrt0"
3) "lxt"
127.0.0.1:6379[1]> linsert newusers after lxt lxt0 // 在 lxt 之后加入 lxt0
(integer) 4
127.0.0.1:6379[1]> lrange newusers 0 -1 // 查看当前类别内容
1) "zrt"
2) "zrt0"
3) "lxt"
4) "lxt0"
  • LLEN KEY_NAME (用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误)
127.0.0.1:6379[1]> llen newusers
(integer) 4
  • Lpop KEY_NAME (用于移除并返回列表的第一个元素)
127.0.0.1:6379[1]> lrange newusers 0 -1
1) "zrt"
2) "zrt0"
3) "lxt"
4) "lxt0"
127.0.0.1:6379[1]> lpop newusers
"zrt"
127.0.0.1:6379[1]> lrange newusers 0 -1
1) "zrt0"
2) "lxt"
3) "lxt0"
  • LPUSHX KEY_NAME VALUE1… VALUEN (将一个值插入到已存在的列表头部,列表不存在时操作无效)
127.0.0.1:6379[1]> lpushx newusers first
(integer) 4
127.0.0.1:6379[1]> lrange newusers 0 -1
1) "first"
2) "zrt0"
3) "lxt"
4) "lxt0"
  • LREM KEY_NAME COUNT VALUE
// 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素
// count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
// count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
// count = 0 : 移除表中所有与 VALUE 相等的值。

127.0.0.1:6379[1]> lrange newusers 0 -1
1) "first"
2) "zrt0"
3) "lxt"
4) "lxt0"
127.0.0.1:6379[1]> lrem newusers 2 lxt0
(integer) 1
127.0.0.1:6379[1]> lrange newusers 0 -1
1) "first"
2) "zrt0"
3) "lxt"
  • LSET KEY_NAME INDEX VALUE (通过索引来设置元素的值;当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误)
127.0.0.1:6379[1]> lpush users zrt // 新增加一个列表
(integer) 1
127.0.0.1:6379[1]> lrange users 0 -1
1) "zrt"
127.0.0.1:6379[1]> lset users 0 zhangruitao // 通过索引设置值
OK
127.0.0.1:6379[1]> lrange users 0 -1
1) "zhangruitao"
  • LTRIM KEY_NAME START STOP (对一个列表进行修剪(trim),就是说,让列表只保留指定 区间内的元素,不在指定区间之内的元素都将被删除;下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。)
127.0.0.1:6379[1]> lpush fruit apple pear banana // 新创一个列表
(integer) 3
127.0.0.1:6379[1]> lrange fruit 0 -1 // 查看
1) "banana"
2) "pear"
3) "apple"
127.0.0.1:6379[1]> ltrim fruit 1 -1 // 裁剪保留第二个到最后一个
OK
127.0.0.1:6379[1]> lrange fruit 0 -1
1) "pear"
2) "apple"
  • RPOP KEY_NAME (用于移除列表的最后一个元素,返回值为移除的元素)
127.0.0.1:6379[1]> lrange fruit 0 -1
1) "pear"
2) "apple"
127.0.0.1:6379[1]> rpop fruit // 移除列表的最后一个元素
"apple"
127.0.0.1:6379[1]> lrange fruit 0 -1
1) "pear"
  • RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME (用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回)
127.0.0.1:6379[1]> lrange users 0 -1
1) "zhangruitao"
127.0.0.1:6379[1]> rpoplpush fruit users
"pear"
127.0.0.1:6379[1]> lrange users 0 -1
1) "pear"
2) "zhangruitao"

参考:

https://www.runoob.com/redis/redis-commands.html

https://learnku.com/articles/24802

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值