redis List类型命令

2023-02-23  本文已影响0人  饱饱想要灵感

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"
上一篇下一篇

猜你喜欢

热点阅读