首页 > SQL学习 > Redis的列表操作命令
2019
08-13

Redis的列表操作命令

列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。每个list可以存储2^32-1个元素(4294967295)

设置/插入命令:

lpush key value [value ...]

    以栈结构(后进先出)将一个或多个值value插入到key
    key不存在将创建一个新的空列表并执行lpush操作
    返回执行lpush命令后key的长度

lpushx key value

    当且仅当key存在时将value插入到列表key的表头,key不存在时不进行任何操作
    返回执行lpushx命令之后key的长度

rpush key value [value ...]

    以队列结构(先进先出)将一个或多个值value插入到key
    key不存在将创建一个新的空列表并执行rpush操作
    返回执行lpush命令后key的长度

rpushx key value

    当且仅当key存在时将value插入到列表key的表尾,key不存在时不进行任何操作
    返回执行lpushx命令之后key的长度

lset key index value

    将key下标为index的元素的值设置为value,
    操作成功返回OK,当index超出范围或key为一个空列表(key不存在)返回一个错误

linsert key before|after pivot value:

    将value值插入到key当中的pivot值之前或之后
    pivot不存在或key不存在(key被视为空列表)时不执行任何操作
    命令执行成功,返回插入操作完成之后列表的长度
    pivot不存在返回-1;key不存在或为空列表返回0

移除命令:

lpop key:弹出(移除)并返回列表key的头(第一个)元素,key不存在时返回nil

blpop key [key ...] timeout

    阻塞的弹出给定的若干个key中第一个存在且不为空的列表的头部元素,是lpop命令的阻塞版本
    如果给定的key都不存在或为空列表,那么将阻塞连接,直到超时或有另一个客户端对给定的任意一个key执行lpush或rpush命令为止。
    timeout是一个以秒为单位的数字。设为0表示阻塞时间无限期延长
    如果所有列表都不存在或为空,返回一个nil。否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值

rpop key:弹出(移除)并返回列表key的尾(最后一个)元素,key不存在时返回nil

brpop key [key ...] timeout

作用和blpop相似,brpop命令是弹出若干个key中第一个存在且不为空的列表的尾部(最后一个)元素,是rpop命令的阻塞版本,用法参考blpop

lrem key count value

    根据count的值,移除列表中与value值相等的元素
    count > 0 : 从前向后搜索,移除与value相等的count个元素
    count < 0 : 从后向前搜索,移除与value相等的count的绝对值个元素
    count = 0 : 移除表中所有与value相等的元素
    返回被移除元素的数量
    key不存在(key被视为空列表)返回0

ltrim key start stop:

    对一个列表进行修剪(trim),只保留指定区间内的元素
    如果start比列表的最大下标还要大,那么key被修剪为一个空列表
    如果stop最大下标还要大,将stop的值设置为最大下标
    命令执行成功时返回OK

获取及其他命令:

lrange key start stop

    返回key中指定下标start到stop区间的元素(包含start和stop,可以为负数)
    如果start比列表的最大下标还要大,那么返回一个空列表
    如果stop最大下标还要大,将stop的值设置为最大下标

lindex key index:返回key中下标为index(可以为负数)的元素

llen key:返回key的长度。key不存在(key被视为空列表)返回0

rpoplpush source destination

命令rpoplpush在一个原子时间内,执行以下两个动作:

    命令rpoplpush在一个原子时间内,执行以下两个动作:
    1、将列表source中的最后一个元素(尾元素)弹出,并返回给客户端
    2、将source弹出的元素插入到列表destination,作为destination列表的的头元素
    返回被弹出的元素,如果source不存在返回nil并且不执行第二步操作

brpoplpush source destination timeout

    命令rpoplpush的阻塞版本,当source不为空时,表现和rpoplpush一样。
    source为空将阻塞连接,直到超时或有另一个客户端对source执行lpush或rpush命令为止
    timeout是一个以秒为单位的数字。设为0表示阻塞时间无限期延长
    在指定超时时间内没有任何元素被弹出,则返回一个nil和等待时长,反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。