1.lpush key value value``````
加入版本1.0.0。
时间复杂度:O(1)。
将所有指定的值插入到存于key 的列表的头部。如果key 不存在,那么在进行
push 操作前会创建一个空列表。 如果key 对应的值不是一个 list 的话,那么会返回一个错误。
可以使用一个命令把多个元素 push 进入列表,只需在命令末尾加上多个指定的参数。元素是从最左端的到最右端的、一个接一个被插入到 list 的头部。 所以对于这个命令例子LPUSH mylist a b c ,返回的列表是c 为第一个元素,b 为第二个元素,a 为第三个元素。
返回值
整型回复: 在 push 操作后的 list 长度。
历史
>= 2.4 : 接受多个value 参数。版本老于
2.4 的 Redis 只能每条命令 push 一个值。
2.lpushx key value
加入版本2.2.0。
时间复杂度:O(1)。
只有当key 已经存在并且存着一个 list 的时候,在这个key 下面的
list 的头部插入value 。 与LPUSH相反,当key 不存在的时候不会进行任何操作。
返回值
整型回复: 在 push 操作后的 list 长度。
3.lrange key start end
入版本1.0.0。
时间复杂度:O(S+N)。其中S是起始偏移量,N是指定范围内的元素数量。
返回存储在key 的列表里指定范围内的元素。start 和end 偏移量都是基于0的下标,即list的第一个元素下标是0 (list的表头),第二个元素下标是1 ,以此类推。
偏移量也可以是负数,表示偏移量是从list尾部开始计数。 例如,-1 表示列表的最后一个元素,-2 是倒数第二个,以此类推。
在不同编程语言里,关于求范围函数的一致性
需要注意的是,如果你有一个list,里面的元素是从0到100,那么LRANGE list 0 10 这个命令会返回11个元素,即最右边的那个元素也会被包含在内。 在你所使用的编程语言里,这一点可能是也可能不是跟那些求范围有关的函数都是一致的。(像Ruby的Range.new ,Array#slice 或者Python的range() 函数。)
超过范围的下标
当下标超过list范围的时候不会产生error。 如果start 比list的尾部下标大的时候,会返回一个空列表。 如果stop 比list的实际尾部大的时候,Redis会当它是最后一个元素的下标。
返回值
多批量回复: 指定范围里的列表元素。
4.lpop key
加入版本1.0.0。
时间复杂度:O(1)。
移除并且返回key 对应的 list 的第一个元素。
返回值
批量回复: 返回第一个元素的值,或者当key 不存在时返回nil 。
5.lrem key count value
加入版本1.0.0。
时间复杂度:O(N),此处N表示list的长度。
从存于key 的列表里移除前count 次出现的值为value 的元素。
这个count 参数通过下面几种方式影响这个操作:
count > 0 : 从头往尾移除值为value 的元素。
count < 0 : 从尾往头移除值为value 的元素。
count = 0 : 移除所有值为value 的元素。
比如,LREM list -2 "hello" 会从存于list 的列表里移除最后两个出现的"hello" 。
需要注意的是,如果list里没有存在key就会被当作空list处理,所以当key 不存在的时候,这个命令会返回0 。
返回值
整型回复: 被移除的元素个数。
6.lset key index value
加入版本1.0.0。
时间复杂度:O(N),此处N表示list的长度。设置list里第一个或者最后一个元素的复杂度是O(1)。
设置index 位置的list元素的值为value 。
更多关于index 参数的信息,详见LINDEX。
当index超出范围时会返回一个error。
返回值
状态回复
7.ltrim key start end
加入版本1.0.0。
时间复杂度:O(N) 这里的N是该操作中要被移除掉的元素个数。
修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。start 和stop 都是由0开始计数的,
这里的0 是列表里的第一个元素(表头),1 是第二个元素,以此类推。
例如:LTRIM foobar 0 2 将会对存储在foobar 的列表进行修剪,只保留列表里的前3个元素。
start 和end 也可以用负数来表示与表尾的偏移量,比如-1 表示列表里的最后一个元素,-2 表示倒数第二个,等等。
超过范围的下标并不会产生错误:如果start 超过列表尾部,或者start
> end ,结果会是列表变成空表(即该 key 会被移除)。 如果end 超过列表尾部,Redis 会将其当作列表的最后一个元素。
LTRIM的一个常见用法是和LPUSH/RPUSH一起使用。
例如:
LPUSH mylist someelement
LTRIM mylist 0 99
这一对命令会将一个新的元素 push 进列表里,并保证该列表不会增长到超过100个元素。这个是很有用的,比如当用 Redis 来存储日志。 需要特别注意的是,当用这种方式来使用LTRIM的时候,操作的复杂度是O(1),
因为平均情况下,每次只有一个元素会被移除。
返回值
状态回复
8.rpush key vaue value`````
加入版本1.0.0。
时间复杂度:O(1)。
向存于key 的列表的尾部插入所有指定的值。如果key 不存在,那么会创建一个空的列表然后再进行
push 操作。 当key 保存的不是一个列表,那么会返回一个错误。
可以使用一个命令把多个元素打入队列,只需要在命令后面指定多个参数。元素是从左到右一个接一个从列表尾部插入。 比如命令RPUSH mylist a b c 会返回一个列表,其第一个元素是a ,第二个元素是b ,第三个元素是c 。
返回值
整型回复: 在 push 操作后的列表长度。
历史
>= 2.4 : 接受多个value 参数。
在老于 2.4 的 Redis 版本中,一条命令只能 push 单一个值。
9.rpop key
加入版本1.0.0。
时间复杂度:O(1)。
移除并返回存于key 的 list 的最后一个元素。
返回值
批量回复: 最后一个元素的值,或者当key 不存在的时候返回nil 。
10.rpoplpush key1 key2
加入版本1.2.0。
时间复杂度:O(1)。
Atomically returns and removes the last element (tail) of the list stored atsource , and pushes the
element at the first element (head) of the list stored atdestination .
For example: considersource holding the lista,b,c ,
anddestination holding the listx,y,z .
ExecutingRPOPLPUSHresults insource holdinga,b anddestination holdingc,x,y,z .
Ifsource does not exist, the valuenil is
returned and no operation is performed. Ifsource anddestination are
the same, the operation is equivalent to removing the last element from the list and pushing it as first element of the list, so it can be considered as a list rotation command.
Return value
Bulk reply: the element being popped and pushed.
11.rpush key value
加入版本2.2.0。
时间复杂度:O(1)。
将值value 插入到列表key 的表尾,
当且仅当key 存在并且是一个列表。 和RPUSH命令相反,
当key 不存在时,RPUSHX 命令什么也不做。
返回值
Integer: RPUSHX 命令执行之后,表的长度。
12.lindex key index
加入版本1.0.0。
时间复杂度:O(N),此处N是通过下标遍历到要找的元素所经过元素个数。也就是说要询问list里的第一个或者最后一个元素的复杂度是O(1)。
返回列表里的元素的索引index 存储在key 里面。
下标是从0开始索引的,所以0 是表示第一个元素,1 表示第二个元素,并以此类推。
负数索引用于指定从列表尾部开始索引的元素。在这种方法下,-1 表示最后一个元素,-2 表示倒数第二个元素,并以此往前推。
当key 位置的值不是一个列表的时候,会返回一个error。
返回值
批量回复:请求的对应元素,或者当index 超过范围的时候返回nil 。
13.linsert key before|after value1 value2
加入版本2.2.0。
时间复杂度:O(N),此处N是在看见pivot 值之前遍历过的元素个数。
这意味着在list最左端(表头)进行插入的复杂度是O(1),而在list最右端(表尾)进行插入是O(N)。
把value 插入存于key 的列表中在基准值pivot 的前面或后面。
当key 不存在时,这个list会被看作是空list,任何操作都不会发生。
当key 存在,但保存的不是一个list的时候,会返回error。
返回值
整型回复: 经过插入操作后的list长度,或者当pivot 值找不到的时候返回-1 。
注:本文的命令详解主要来源redis中文官网,这里是进一步整理供学习和以后查询使用。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com