目录
相关内容:
Redis五大基本类型------Hash哈希命令详解(命令用法详解+思维导图详解)-CSDN博客
Redis五大基本类型------String字符串命令详解(命令用法详解+思维导图详解)_redis 字符串-CSDN博客
一、List列表类型介绍
列表类型用来存储多个有序的字符串,列表中的每个字符串称为元素,一个列表最多可以存储2^32-1个元素。在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表,获取指定索引下标的元素等。
列表是一种很灵活的数据结构,它可以充当栈和队列的角色。
列表类型的特点:
1、列表中的元素是有序的,这里的有序指的并不是元素会自动按升序/降序 排序,而是元素根据插入的顺序是有序的。这意味着可以通过索引下标获取某个元素或某个范围的元素。
2、列表中的元素是允许重复的。
3、获取与删除不同,获取不会改变列表长度,删除会改变列表长度。
二、常见命令
1、LPUSH
将一个或多个元素从左侧放入到 list 中,可以理解为头插。
语法:
LPUSH key element [element ...]
返回值:
插入后 list 的长度
示例:
127.0.0.1:6379> LPUSH key 111
(integer) 1
127.0.0.1:6379> LPUSH key 222 333 444
(integer) 4
127.0.0.1:6379> LPUSH key 111
(integer) 5
127.0.0.1:6379> LRANGE key 0 -1
1) "111"
2) "444"
3) "333"
4) "222"
5) "111"
2、LPUSHX
当key存在的时候,将一个或多个元素从左侧放入(头插)到 list 中,若key不存在,则直接返回。
语法:
LPUSHX key element [element ...]
返回值:
插入后 list 的长度
示例:
127.0.0.1:6379> LPUSHX key 111 222 333
(integer) 0
127.0.0.1:6379> LPUSH key 111
(integer) 1
127.0.0.1:6379> LPUSHX key 111 222 333
(integer) 4
127.0.0.1:6379> LRANGE key 0 -1
1) "333"
2) "222"
3) "111"
4) "111"
3、RPUSH
将一个或多个元素从右侧放入到 list 中,可以理解为尾插。
语法:
RPUSH key element [element ...]
返回值:
插入后 list 的长度
示例:
127.0.0.1:6379> RPUSH rkey 111 222 333
(integer) 3
127.0.0.1:6379> RPUSH rkey 444
(integer) 4
127.0.0.1:6379> LRANGE rkey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
4、RPUSHX
当key存在的时候,将一个或多个元素从右侧放入(尾插)到 list 中,若key不存在,则直接返回。
语法:
RPUSHX key element [element ...]
返回值:
插入后 list 的长度
示例:
127.0.0.1:6379> RPUSHX key 111
(integer) 0
127.0.0.1:6379> RPUSH key 111
(integer) 1
127.0.0.1:6379> RPUSHX key 111
(integer) 2
127.0.0.1:6379> RPUSHX key 222 333
(integer) 4
127.0.0.1:6379> LRANGE key 0 -1
1) "111"
2) "111"
3) "222"
4) "333"
5、LRANGE
获取从 start 到 end 区间的所有元素,左闭右闭。
语法:
LRANGE key start stop
返回值:
查询到的指定区间的元素
示例:
127.0.0.1:6379> RPUSH mykey 111 222 333 444 555 666
(integer) 6
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
6) "666"
127.0.0.1:6379> LRANGE mykey -6 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
6) "666"
127.0.0.1:6379> LRANGE mykey 2 4
1) "333"
2) "444"
3) "555"
127.0.0.1:6379> LRANGE key 0 -1 #key不存在
(empty array)
6、LPOP
从 list 左侧取出元素,即头删。
语法:
LPOP key
返回值:
取出的元素或者 nil
示例:
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
6) "666"
127.0.0.1:6379> LPOP mykey
"111"
127.0.0.1:6379> LRANGE mykey 0 -1
1) "222"
2) "333"
3) "444"
4) "555"
5) "666"
127.0.0.1:6379> LPOP mykey
"222"
127.0.0.1:6379> LPOP mykey
"333"
127.0.0.1:6379> LPOP mykey
"444"
127.0.0.1:6379> LPOP mykey
"555"
127.0.0.1:6379> LPOP mykey
"666"
127.0.0.1:6379> LPOP mykey
(nil)
127.0.0.1:6379> LRANGE mykey 0 -1
(empty array)
7、RPOP
从 list 右侧取出元素,即尾删。
语法:
RPOP key
返回值:
取出的元素或者 nil
示例:
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
6) "666"
127.0.0.1:6379> RPOP mykey
"666"
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
127.0.0.1:6379> RPOP mykey
"555"
127.0.0.1:6379> RPOP mykey
"444"
127.0.0.1:6379> RPOP mykey
"333"
127.0.0.1:6379> RPOP mykey
"222"
127.0.0.1:6379> RPOP mykey
"111"
127.0.0.1:6379> RPOP mykey
(nil)
127.0.0.1:6379> LRANGE mykey 0 -1
(empty array)
8、LREM
删除指定个数的某个元素。
语法:
LREM key count element
返回值:
删除成功的个数
示例:
127.0.0.1:6379> RPUSH mykey 111 222 222 333 333 333
(integer) 6
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "222"
4) "333"
5) "333"
6) "333"
127.0.0.1:6379> LREM mykey 1 111
(integer) 1
127.0.0.1:6379> LREM mykey 1 222
(integer) 1
127.0.0.1:6379> LREM mykey 2 333
(integer) 2
127.0.0.1:6379> LRANGE mykey 0 -1
1) "222"
2) "333"
9、LSET
设置并覆盖指定位置的值。
语法:
LSET key index element
返回值:
成功返回OK,如果设置超出范围则报错
示例:
cpp
127.0.0.1:6379> RPUSH mykey 111 222 333 444 555 666
(integer) 6
127.0.0.1:6379> LSET mykey 0 0
OK
127.0.0.1:6379> LSET mykey -1 0
OK
127.0.0.1:6379> LSET mykey 3 0
OK
127.0.0.1:6379> LSET mykey 10 0
(error) ERR index out of range
127.0.0.1:6379> LRANGE mykey 0 -1
1) "0"
2) "222"
3) "333"
4) "0"
5) "555"
6) "0"
10、LINDEX
获取从左数第 index 位的元素。
语法:
LINDEX key index
返回值:
查询到的指定的元素或者 nil
示例:
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
6) "666"
127.0.0.1:6379> LINDEX mykey 0
"111"
127.0.0.1:6379> LINDEX mykey -1
"666"
127.0.0.1:6379> LINDEX mykey 2
"333"
127.0.0.1:6379> LINDEX mykey 10
(nil)
127.0.0.1:6379> LRANGE mykey 0 -1
1) "111"
2) "222"
3) "333"
4) "444"
5) "555"
6) "666"
注意:
获取与取出不同。获取只是得到这个元素的值,并不会删除;取出是得到这个元素的值,并且删除。
11、LINSERT
在特定的位置插入元素。
语法:
LINSERT key BEFORE|AFTER pivot element
返回值:
插入后 list 的长度
示例:
127.0.0.1:6379> lpush mykey 111
(integer) 1
127.0.0.1:6379> LINSERT mykey before 111 000
(integer) 2
127.0.0.1:6379> LINSERT mykey after 111 222
(integer) 3
127.0.0.1:6379> LRANGE mykey 0 -1
1) "000"
2) "111"
3) "222"
12、LLEN
获取 list 的长度。
语法:
LLEN key
返回值:
list 的长度
示例:
127.0.0.1:6379> lrange mykey 0 -1
1) "000"
2) "111"
3) "222"
127.0.0.1:6379> LLEN mykey
(integer) 3
127.0.0.1:6379> rpush mykey 333 444 555
(integer) 6
127.0.0.1:6379> LLEN mykey
(integer) 6
13、阻塞版本命令
BLPOP 和 BRPOP是 LPOP 和 RPOP 的阻塞版本。阻塞版本和非阻塞版本的作用基本一致,二者异同点:
**·**在列表中有元素的前提下,阻塞版本和非阻塞版本的作用一致。
**·**如果列表中没有元素,非阻塞版本会立即返回nil,阻塞版本会根据timeout,阻塞一段时间。期间 redis 可以执行其他命令,但要求执行该命令的客户端会表现为阻塞状态。
命令中如果设置了多个键,那么会从左到右遍历键,一旦有一个键对应的列表中可以弹出元素,命令立即返回并结束阻塞状态。
·BLPOP
LPOP的阻塞版本。
语法:
BLPOP key [key ...] timeout
返回值:
取出的元素或者 nil
示例:
在列表中没元素的情况下
①
②
③
·BRPOP
RPOP的阻塞版本。
语法:
BRPOP key [key ...] timeout
返回值:
取出的元素或者 nil
用法:使用方法与BLPOP的相同
三、命令小结
以上就是 Redis五大基本类型------List列表命令详解(命令用法详解+思维导图详解) 的全部内容了,希望能对你有所帮助!你的点赞收藏关注是对我最大的支持!