list:允许重复元素,按照插入顺序,依次排列
1.增:
lpush key value1 value2:插入到表头
如果key不存在,一个空列表会被创建并执行LPUSH操作。
当key存在但不是列表类型时,返回一个错误。
返回值:执行LPUSH命令后,列表的长度。
lpushx key value1 value2:插入到表头
如果key不存在,lpushx就什么也不做。
当key存在但不是列表类型时,返回一个错误。
rpush key value1 value2:插入到表尾
如果key不存在,一个空列表会被创建并执行RPUSH操作。
当key存在但不是列表类型时,返回一个错误。
返回值:执行LPUSH命令后,列表的长度。
rpushx key value1 value2:插入到表尾
和RPUSH命令相反,当key不存在时,RPUSHX命令什么也不做。
返回值:RPUSHX命令执行之后,表的长度。
当key不存在时,key被视为空列表,不执行任何操作。
移除并返回列表key的头元素。
返回值:删除列表的头元素。当key不存在时,返回nil。
rpop key:
移除并返回列表key的尾元素。
返回值:得到列表的长度,空的时候返回0,不是列表类型,返回错误。
lrem key count value:
count的值可以是以下几种:
count > 0: 从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < 0: 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。
count = 0: 移除表中所有与value相等的值。
返回值:被移除的元素的数量。key不存在的时候,lrem就返回0.
LTRIM key start stop:
list 只留下这区间的元素
3.改:
lset key index value: 将列表key下标为index的元素的值设置为value。
当index参数超出范围,或对一个空列表(key不存在)进行LSET时,返回一个错误。
4.查
llen key:返回key的长度
返回这个key,index位置的数据值,
如果key不是列表类型,返回一个错误。
lindex key index:返回这个key,index位置的数据值,
如果key不是列表类型,返回一个错误。
如果index参数的值不在列表的区间范围内(out of range),返回nil。
lrange key 0 -1 :列出所有的元素。
exists key:查看key是否存在
返回值:key的长度
5.阻塞式
blpop key [key ...] timeout:blpop shi lpop 的阻塞式原语
非阻塞行为:
当存在多个给定key时,BLPOP按给定key参数排列的先后顺序,依次检查各个列表。弹出遇到的第一个非空列表的头元素,并和被弹出元素所属的列表的名字一起,组成结果返回给调用者。
redis> BLPOP job command request 0 # job列表为空,被跳过,紧接着command列表的第一个元素被弹出。 1) "command" # 弹出元素所属的列表 2) "update system..." # 弹出元素所属的值
阻塞行为:
如果所有给定key都不存在或都是空列表,那么BLPOP命令将阻塞连接,直到等待超时。或有另一个客户端对给定key的任意一个执行LPUSH或RPUSH命令为止。
超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长(block indefinitely) 。
相同的key可以被多个客户端同时阻塞。
不同的客户端被放进一个队列中,按”先阻塞先服务”(first-BLPOP,first-served)的顺序为key执行BLPOP命令。
BLPOP可以用于流水线(pipline,批量地发送多个命令并读入多个回复),但把它用在MULTI/EXEC块当中没有意义。因为这要求整个服务器被阻塞以保证块执行时的原子性,该行为阻止了其他客户端执行LPUSH或RPUSH命令。因此,一个被包裹在MULTI/EXEC块内的BLPOP命令,行为表现得就像LPOP一样,对空列表返回nil,对非空列表弹出列表元素,不进行任何阻塞操作。
brpop 同上,只是弹出的是队尾的元素。
brpoplpush
当列表source为空时,BRPOPLPUSH命令将阻塞连接,直到等待超时,或有另一个客户端对source执行LPUSH或RPUSH命令为止。
超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长(block indefinitely) 。
6.知识点:
rpoplpush source destination:
命令RPOPLPUSH在一个原子时间内,执行以下两个动作:
将列表source中的最后一个元素(尾元素)弹出,并返回给客户端。
将source弹出的元素插入到列表destination,作为destination列表的的头元素。
返回值:被弹出的元素。
返回值:删除列表的尾元素。当key不存在时,返回nil。
如果source不存在,值nil被返回,并且不执行其他动作。
如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。