您的位置:首页 > 数据库 > Redis

redis列表(list)命令

2017-11-13 10:53 375 查看
redis中list可以插入可以重复的数据,数据呈现顺序排列。

list列表命令

1、blpop命令-移出并获取列表的第一个元素。

redis中blpop用于移出并获取列表的第一个元素,如果列表没有元素会等待到超时或发现可弹出元素为止。如果timeout为0其列表中没数据则会一直等待。

语法:

blpop list1 list2 ... listN timeout


版本:2.2.0及以上

返回值:

如果列表内容为空,返回一个nil。否则返回一个被弹出元素所属的key,第二个是被弹出元素的value。

eg:

127.0.0.1:6379> lpush list 100
(integer) 1
127.0.0.1:6379> blpop list 100
1) "list"
2) "100"
127.0.0.1:6379> blpop list 100
1) "list"
2) "100"
(33.19s)
127.0.0.1:6379> blpop list 1
(nil)
(1.08s)


2、brpop命令-移出并获取列表最后一个元素。

redis中brpop命令用于移出并获取列表的最后一个元素,如果列表中没有元素会阻塞命令直到等待超时,如果timeout设置为0,则如果列表没有返回数据,命令一直阻塞。

语法:

brpop list1 list2 ... listn  timeout


版本:2.0.0及以上

返回值:加入在指定时间内没有任何元素被弹出,则返回一个nil和等待时长。反之,返回一个被弹出的列表名和对应的值。

例子和blpop一致。

3、brpoplpush命令-从一个列表中弹出元素后将弹出的元素插入到另外一个列表

redis中brpoplpush命令从列表中弹出一个值,将弹出元素插入到另外一个列表中并返回它;如果列表没有元素会阻塞命令,直到等待超时或发现可谈出元素为止。

语法:

brpoplpush list1 anotherlist timeout


版本:2.0.0

返回值:如果在指定时间内没有任何元素被弹出,则返回一个nil和等待时长。反之,返回弹出元素的值和等待时长。

4、lindex命令-通过索引获取列表中的元素。

redis中lindex命令用于通过索引获取列表中的元素。也可以使用负数下标,以-1表示最后一个元素,以此类推。

语法:

lindex keyname index


版本:1.0.0

返回值:列表中下标为指定索引值的元素。如果指定索引值不在列表的区间范围内,返回nil。

eg:

redis 127.0.0.1:6379> LPUSH mylist "World"
(integer) 1

redis 127.0.0.1:6379> LPUSH mylist "Hello"
(integer) 2

redis 127.0.0.1:6379> LINDEX mylist 0
"Hello"

redis 127.0.0.1:6379> LINDEX mylist -1
"World"

redis 127.0.0.1:6379> LINDEX mylist 3        # index不在 mylist 的区间范围内
(nil)


5、linsert命令-在列表的元素前或者后面插入新元素

redis中linset命令用于在列表元素前或者后面插入元素。当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。如果key不是列表类型,返回一个错误。

语法:

linsert keyname before existingvalue newvalue


版本:1.0.0

返回值:如果命令执行成功,返回插入操作完成后,列表的长度。如果没有找到指定元素,返回-1。如果key不存在或为空列表,返回0。

eg:

redis 127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LINSERT list1 BEFORE "bar" "Yes"
(integer) 3
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "foo"
2) "Yes"
3) "bar"


6、llen命令-获取列表长度

redis中llen命令用于获取列表的长度。如果列表key不存在,则key被解释为一个空列表,返回0。如果key不是列表类型,返回一个错误。

语法

llen keyname


版本:1.0.0及以上

返回值:列表的长度。

eg:

127.0.0.1:6379> llen list
(integer) 0
127.0.0.1:6379> rpush list "foo"
(integer) 1
127.0.0.1:6379> llen list
(integer) 1
127.0.0.1:6379>


7、lpop命令-移出并获取列表的第一个元素

redis中lpop命令用于移除并返回列表的第一个元素。

语法:

llen keyname


版本:1.0.0及以上

返回值:列表的第一个元素。当列表key不存在时,返回nil。

eg:

redis 127.0.0.1:6379> RPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> RPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LPOP list1
"foo"


8、lpush命令-将一个或多个值从插入到列表头部

redis中lpush命令将一个或多个值插入到列表头部。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,返回一个错误。

注意:在2。4版本及以前的lpush命令,都只接受单个value值。

语法:

lpush keyname value1 ... valuen


版本:1.0.0及以上

返回值:执行lpush后,列表的长度。

eg:

redis 127.0.0.1:6379> LPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> LPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LRANGE list1 0 -1
1) "foo"
2) "bar


9、lpushx命令-将一个或多个值插入到已经存在的列表。

redis中lpushx将一个或多个值插入到已存在的列表头,列表不存在是操作无效。

语法

lpushx keyname value1 value2 ... valuen


版本:2.2.0及以上

返回值:lpush执行后列表的长度。

10、lrange命令-获取列表指定范围内的元素

redis中lrange命令返回列表指定区间的元素,区间以便宜量start和end指定。其中0表示列表的第一个元素。-1表示列表最后一个元素。依次类推。

语法:

lrange keyname start end


版本:1.0.0

返回值:

一个列表,包含指定区间的元素。

eg:

redis 127.0.0.1:6379> LPUSH list1 "foo"
(integer) 1
redis 127.0.0.1:6379> LPUSH list1 "bar"
(integer) 2
redis 127.0.0.1:6379> LPUSHX list1 "bar"
(integer) 0
redis 127.0.0.1:6379> LRANGE list1 0 -1
1) "foo"
2) "bar"
3) "bar"


11、lrem命令-移除列表元素

redis中lrem根据参数count移除列表终于value相等的元素。

count值可以是以下几种:

大于0:从表头向尾搜索,移除和 value相等的元素,数量为count

小于0:从表尾向头搜索,移除和 value相等的元素,数量为count

等于0:移除表中所有与value相等的值。

语法:

lrem keyname count value


版本:1.0.0

返回值:

被移除元素的数量。列表不存在时返回。

eg:

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 4
redis 127.0.0.1:6379> LREM mylist -2 "hello"
(integer) 2


12、lset命令-通过索引设置列表元素的值

redis中lset命令通过索引来设置元素的值。

当索引参数超出范围,或对一个空列表进行lset时,返回一个错误。

语法:

lset keyname index value


版本:1.0.0及以上

返回值:操作成功返回Ok,否则返回错误信息。

eg:

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 4
redis 127.0.0.1:6379> LSET mylist 0 "bar"
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1: "bar"
2) "hello"
3) "foo"
4) "hello"


13、ltrim命令-对一个列表进行修剪

redis中ltrim命令对一个列表进行修剪,让列表值保留指定区间内的元素,不在指定区间之内的元素都将被删除。下标为0表示列表的第一个元素,1表示列表的第二个元素。-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

语法:

ltrim keyname start end


版本:1.0.0及以上

返回值:执行命令成功时返回ok

eg:

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 4
redis 127.0.0.1:6379> LTRIM mylist 1 -1
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
3) "bar"


14、rpop命令-移除并获取列表最后一个元素

redis中rpop命令用于移除并返回列表的最后一个元素。

语法:

rpop keyname


版本:1.0.0及以上

返回值:列表的最后一个元素。当列表不存在时,返回nil

eg

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 3
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 4
redis 127.0.0.1:6379> RPOP mylist
OK
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "hello"
3) "foo"


15、rpoplpush命令-移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

redis中poplpush命令移除列表的最后一个元素,并将该元素添加到另一个列表并返回。是个非阻塞命令。

语法:

rpoplpush sourcekeyname dstkeyname


版本:1.0.0及以上

返回值:被弹出的元素。

eg:

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 3
redis 127.0.0.1:6379> RPOPLPUSH mylist myotherlist
"bar"
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"


16、rpush命令-在列表中添加一个或者多个值

redis中rpush用于将一个或者多个值插入到类别的尾部。

如果列表不存在,一个空列表会被创建并执行rpush操作。当列表存在但不是列表类型时,返回一个错误。

注意:在redis2.4版本以前rpush命令,都只接受单value值。

语法

rpush keyname value1 ... valuen


版本:1.0.0及以上

返回值:执行rpush操作后,列表的长度。

eg:

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSH mylist "bar"
(integer) 3
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
3) "bar"


17、rpushx命令-为已存在的列表添加值

redis中rpushx命令用于将一个或多个值插入到已存在的列表尾部。如果列表不存在,操作无效。

语法

rpushx keyname value1 ... valuen


版本:2.2.0及以上

返回值:执行rpushx操作后,列表的长度。

eg

redis 127.0.0.1:6379> RPUSH mylist "hello"
(integer) 1
redis 127.0.0.1:6379> RPUSH mylist "foo"
(integer) 2
redis 127.0.0.1:6379> RPUSHX mylist2 "bar"
(integer) 0
redis 127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "foo"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: