Redis五大基本类型-List

本文详细介绍了Redis中List数据结构的常用命令,如Lpush/Lpop、LRANGE、LINDEX、LREM、LTRIM等,并展示了如何进行元素插入、删除、索引操作以及修剪和数据迁移。通过实例演示了如何在实际场景中高效利用这些功能。
摘要由CSDN通过智能技术生成

List

这里边的所有命令都是一 ‘L’ 开头的

其实就是一个双向链表,可以使用linsert … before 和 linsert … after 在这个值的前边或者是后边插入值;还可以使用 lpush(left push) 和 rpush(right push)

如果key存在,增加数据或者删除数据;不存在就创建链表,添加数据

插入与删除

127.0.0.1:6379> lpush list one #在list中插入一个元素
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1 #查看可以看出,默认插入的方法的头插法
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> rpush list right #在这个list的尾部插入一个元素
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
================================================================================
127.0.0.1:6379> lpop list #移除顶部元素
"three"
127.0.0.1:6379> rpop list #移除尾部元素
"right"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"

通过下标获取值

127.0.0.1:6379> lindex list 0
"two"
127.0.0.1:6379> lindex list 1
"one"

获取list的长度与移除指定的值

127.0.0.1:6379> lpush list three
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lpush list one
(integer) 4
127.0.0.1:6379> llen list # 查看list的长度
(integer) 4
127.0.0.1:6379> lrange list 0 -1 # 查看list中的值
1) "one"
2) "three"
3) "three"
4) "two"
127.0.0.1:6379> lrem list 1 two # 指定移除two
(integer) 1
127.0.0.1:6379> lrem list 2 three # 如果存在多个相同的value的时候,可以一起移除
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "one"

trim修剪

127.0.0.1:6379> rpush mylist aaa
(integer) 1
127.0.0.1:6379> rpush mylist bbb
(integer) 2
127.0.0.1:6379> rpush mylist ccc
(integer) 3
127.0.0.1:6379> rpush mylist ddd
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "aaa"
2) "bbb"
3) "ccc"
4) "ddd"
127.0.0.1:6379> ltrim mylist 1 2 #只要mylist中下标在1~2号之间的元素
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "bbb"
2) "ccc"

移除当前list的值,把它添加到另一个list中

127.0.0.1:6379> rpush mylist zkw
(integer) 1
127.0.0.1:6379> rpush mylist ls
(integer) 2
127.0.0.1:6379> rpush mylist zs
(integer) 3
127.0.0.1:6379> rpush mylist ww
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "zkw"
2) "ls"
3) "zs"
4) "ww"
127.0.0.1:6379> rpoplpush mylist outherlist # 组合命令,移除mylist中的最后一个元素,把它插入到outherlist中
"ww"
127.0.0.1:6379> lrange mylist 0 -1
1) "zkw"
2) "ls"
3) "zs"
127.0.0.1:6379> lrange outherlist 0 -1
1) "ww"

将list中的指定下标的值替换成另一个

127.0.0.1:6379> exists list # 判断是否存在这个list
(integer) 0
127.0.0.1:6379> lset list 0 redis # 如果list中当前的key存在值就更新,不存在就报错
(error) ERR no such key
127.0.0.1:6379> lpush list java
(integer) 1
127.0.0.1:6379> lindex list 0
"java"
127.0.0.1:6379> lset list 0 redis # 当前key存在值,就更新
OK
127.0.0.1:6379> lindex list 0
"redis"

在一个具体的value的前边或者是后边插入一个值

127.0.0.1:6379> lpush mylist love
(integer) 1
127.0.0.1:6379> linsert mylist before love I # 在love 的前边插入 I
(integer) 2
127.0.0.1:6379> linsert mylist after love you # 在love的后边插入 you
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "I"
2) "love"
3) "you"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值