redis List类型命令
llen
语法:llen key
获取到集合里元素的总个数
lrange
语法:lrange key start stop
查询集合元素,并设置查询区间
start:起始值,设置正数则从左往右,设置负数则从右往左开始
stop:终点值,设置正数则从左往右,设置负数则从右往左开始
注:start(0) stop(-1)代表查询全部
例子:
lrange listString -5 -3
-- 起点从尾部往前数5个,终点从尾部往前数3个;最终显示 -5,-4,-3这三个元素
lrange listString -5 -8
-- 起点从尾部往前数5个,终点从尾部往前数8个;最终显示(empty array)
lpush
语法:lpush key element [element ...]
将一个或多个值插入到集合key的头部(头插法),如果当前key不存在则创建新的
例子:
lpush listNumber 8.4 13 14 10.5 4 19.6 10 14 5.2 10 3 2.5 7 4.7 10 11.2 8 2.2 15.7 20.9
lpush listString remini Momen Pledg Memo Tende Biode Revie silen baobao AusL Simpl Promis baobao Bautifu smil Initiall sunse lemo firs Chaffere
lpushx
语法:lpushx key element [element ...]
往集合左边插入一个元素;若集合key不存在无法插入
rpush
语法:rpush key element [element ...]
将一个或多个值插入到集合key的尾部(尾插法),如果当前key不存在则创建新的
rpushx
语法:rpushx key element [element ...]
往集合右边插入一个元素;若集合key不存在无法插入
lpop
语法:lpop key [count]
从集合左边(头部)弹出(删除)指定的count个元素删除
例子:lpop listString 2 -- 从集合左边弹出两个元素删除
rpop
语法:rpop key [count]
从集合右边(尾部部)弹出(删除)指定的count个元素删除
blpop
语法:blpop key [key ...] timeout
移出并获取集合头部第一个元素,如果集合没有元素会阻塞集合直到等待超时或发现可弹出元素为止,它是lpop的阻塞版
key:如果当前key不存在或者key内部没元素,则一直阻塞等待,等待其它客户端创建此key和元素,会立马弹出
但是超出延迟时间的话还没有弹出元素则会在最后弹出(nil)
[key ...]:设置多个key时,如果第一个key不存在则会考虑弹出第二个key,第三个key....,如果每个key都不存在或没元素
则当前客户端会进入一个阻塞状态,直到有元素弹出,或者自动超时弹出(nil)
例子:
127.0.0.1:6379> blpop listA mylist 480
1) "mylist"
2) "remini"
-- 设置两个key,其中listString为空,会自动去找mylist集合,发现存在元素,并立刻弹出
brpop
语法:brpop key [key ...] timeout
移出并获取集合尾部第一个元素,如果集合没有元素会阻塞集合直到等待超时或发现可弹出元素为止,它是lpop的阻塞版
lindex
语法:lindex key index
返回集合key里索引index位置存储的元素,0n从左往右索引、-1-n从右往左索引
例子: lindex listString -1 -- 获取集合listString里的最后一个索引的元素
lrem
语法:lrem key count element
从集合key中删除前count个值等于element的元素
count > 0: 从头到尾删除值为 value 的元素
count < 0: 从尾到头删除值为 value 的元素
count = 0: 移除所有值为 value 的元素
例子:listString -2 baobao --移除集合listString中的baobao元素,删除个数-2(代表从尾部查找并删除两个),并返回删除成功个数
lset
语法:lset key index element
设置集合key中index位置的元素值为新的element,index为正数则从头到位索引,为负数从尾到头索引查询
例子:lset listString 2 yyds -- 修改集合listString中索引为2的元素为yyds
linsert
语法:linsert key before|after pivot element
把element元素插入到指定集合key里,但是还要以pivot内部的一个元素为基准,看是插到这个元素的左边还是右边
before|after:插入元素的前后位置选项
pivot:集合里的参考元素
element:待插入的元素
注:当集合key不存在时,这个list会被看作是空list,什么都不执行
注:当集合key存在,值不是列表类型时,返回错误
注:当给定的参考元素pivot不存在是则返回-1,因为程序不知道往哪插入
例子:listString after baobao good -- 把good插入到listString集合里,插入参考baobao元素的后面
lpos
语法:lpos key element [rank rank] [count num-matches] [maxlen len]
返回集合key中匹配给定element成员的索引
key:要查询的集合key
element:要查询索引的元素
[rank rank]:选择匹配上的第几个元素,若超出集合指定元素的个数则返回(nil)
[count num-matches]:返回匹配上元素的索引个数,默认返回1个
[maxlen len]:告知lpos命令查询集合的前len个元素,限制查询个数
例子:
lpos listString Romanti -- 查询集合listString里的Romanti出现的索引位置(0开始索引)
lpos listString Romanti rank 2 -- 查询Romanti元素的第二个索引位置
lpos listString Romanti rank 1 count 3 -- 查询Romanti索引的三条记录
lpos listString Romanti rank 1 count 3 maxlen 20 -- 限制查询下标为0~20
1) (integer) 7
2) (integer) 11
lmove
语法:lmove source destination left|right left|right
用于原子地从source集合左边或者右边弹出一个元素,添加到destination新集合里的左边或右边
source:源集合
destination:目标集合
left|right left|right:
第一个:代表从源集合的左边或者右边弹出元素
第二个:代表从目标集合的左边或者右边添加
例子:
lmove listString mylist left right -- 从listString源集合的左边弹出个元素,添加到mylist目标集合的右边
rpoplpush
语法:rpoplpush source destination
原子地从集合source中移除并返回最后一个元素,然后把这个元素插入集合destination的第一个元素
source:源集合
destination:目标集合
注:此方法在Redis6.2.0被废除(使用lmove代替)
blmove
语法:blmove source destination left|right left|right timeout
用于原子地从source集合左边或者右边弹出一个元素,添加到destination新集合里的左边或右边,但是它时lmove的阻塞版本
例子:listString mylist left right 60 -- 从集合listString左边弹出一个元素放到目标集合mylist的尾部, 存在60秒的超时时间,超过60秒没有弹出元素则自动失败,返回(nil)
brpoplpush
语法:brpoplpush source destination timeout
原子地从集合source中移除并返回最后一个元素,然后把这个元素插入集合destination的第一个元素(已废弃使用blmove代替)
例子: brpoplpush listString mylist 50 -- 从集合listString尾部弹出一个元素添加到目标mylist集合的头部,超时时间50秒
ltrim
语法:ltrim key start stop
修订一个已经存在的集合;修订一个指定范围的元素放到当前集合中
例子:
127.0.0.1:6379> ltrim listString -10 -5
OK
127.0.0.1:6379> lrange listString 0 -1
1) "Simpl"
2) "AusL"
) "silen"
4) "Revie"
5) "Biode"
6) "Tende"