美文网首页
redis List类型命令

redis List类型命令

作者: 饱饱想要灵感 | 来源:发表于2023-02-23 11:07 被阅读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"
    

    相关文章

      网友评论

          本文标题:redis List类型命令

          本文链接:https://www.haomeiwen.com/subject/cuwzkdtx.html