redis列表是简单的字符串列表,安装插入顺序排序,您可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表可以包含超过40亿个元素。
实例:
1 127.0.0.1:6379> flushdb 2 OK 3 127.0.0.1:6379> keys * 4 (empty list or set) 5 127.0.0.1:6379> lpush runoobkey redis 6 (integer) 1 7 127.0.0.1:6379> lpush runoobkey mongodb 8 (integer) 2 9 127.0.0.1:6379> lrange runoobkey 0 5 10 1) "mongodb" 11 2) "redis"
redis列表命令
下表列出了相关的基本命令:
redis Blpop命令移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹元素为止。
blpop命令基本语法如下:
blpop list1 list2... listn timeout
返回值:如果列表为空返回一个nil,否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值。
1 127.0.0.1:6379> lrange shidong 0 2 2 1) "44" 3 2) "23" 4 127.0.0.1:6379> keys * 5 1) "zhang" 6 2) "shidong" 7 127.0.0.1:6379> blpop shidong 10#返回含有两个元素的列表,第一个是被弹出元素所属的key,第二个元素是被弹出元素的值。 8 1) "shidong" 9 2) "44"
Brpop命令:
redis Brpop命令移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。
1 127.0.0.1:6379> lrange shidong 0 2 2 1) "44" 3 2) "23" 4 127.0.0.1:6379> keys * 5 1) "zhang" 6 2) "shidong" 7 127.0.0.1:6379> brpop shidong 2 #返回两个元素,第一个是key,第二个是返回的最后一个元素 8 1) "shidong" 9 2) "23"
Brpoplpush 命令
Brpoplpush 命令从列表中弹出一个值(最后一个元素),并将弹出的元素插入到另外一个列表中并返回它,如果没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
返回值:假如在指定时间内没有任何元素弹出,则返回一个nil和等待时长,反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。
实例:
1 127.0.0.1:6379> keys * 2 (empty list or set) 3 127.0.0.1:6379> lpush shidong 22 4 (integer) 1 5 127.0.0.1:6379> lpush shidong 30 6 (integer) 2 7 127.0.0.1:6379> lpush shidong 40 8 (integer) 3 9 127.0.0.1:6379> lrange shidong 0 2 10 1) "40" 11 2) "30" 12 3) "22" 13 127.0.0.1:6379> brpoplpush shidong sd 10#从列表弹出一个元素插入另外一个列表,并返回插入的value值 14 "22" 15 127.0.0.1:6379> lrange shidong 0 2 16 1) "40" 17 2) "30" 18 127.0.0.1:6379> brpoplpush shidong sd 10 19 "30" 20 127.0.0.1:6379> lrange shidong 0 2 21 1) "40" 22 127.0.0.1:6379> lrange sd 0 2#查看被插入的列表value值 23 1) "30" 24 2) "22"
lindex命令
该命令用于通过索引获取列表中的元素,你也可以使用负数下表,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
基本语法如下:
lindex key_name index_position
返回值:列表中下标为指定索引值的元素,如果指定索引值不在列表的区间范围内,返回nil.
实例:
1 127.0.0.1:6379> lrange mylist 0 10 2 1) "name" 3 2) "my" 4 3) "!" 5 4) "world" 6 5) "Hello" 7 127.0.0.1:6379> lindex mylist 0 8 "name" 9 127.0.0.1:6379> lrange mylist 0 10 10 1) "name" 11 2) "my" 12 3) "!" 13 4) "world" 14 5) "Hello" 15 127.0.0.1:6379> lindex mylist 2 16 "!" 17 127.0.0.1:6379> lindex mylist -1 18 "Hello"
linsert 命令
该命令用于在列表的元素前或者后插入元素,当指定元素不存在于列表中时,不执行任何操作,当列表不存在时,被视为空列表,不执行任何操作,如果key不是列表类型,返回一个错误。
linsert命令基本语法如下:
linsert key_name before existing_value new_value
返回值:如果命令执行成功,返回插入操作完成之后,列表的长度,如果没有找到指定元素,返回-1,如果key不存在或为空列表,返回0。
1 127.0.0.1:6379> lrange mylist 0 10 2 1) "to" 3 2) "welcome" 4 3) "hello" 5 4) "world" 6 127.0.0.1:6379> linsert mylist before "world" "home" 7 (integer) 5 8 127.0.0.1:6379> lrange mylist 0 10 9 1) "to" 10 2) "welcome" 11 3) "hello" 12 4) "home" 13 5) "world" 14 127.0.0.1:6379> linsert mylist before "list" "back" 15 (integer) -1 16 127.0.0.1:6379> linsert list before "list" "back" 17 (integer) 0
llen命令
llen该命令用于返回列表的长度,如果列表key不存在,则key被解释为一个空列表,返回0,如果key不是列表类型,返回一个错误。
llen命令基本语法:llen key_name
返回值:列表的长度。
实例:
1 127.0.0.1:6379> keys * 2 1) "mylist" 3 127.0.0.1:6379> lrange mylist 0 10 4 1) "to" 5 2) "welcome" 6 3) "hello" 7 4) "home" 8 5) "world" 9 127.0.0.1:6379> llen mylist #返回列表mylist的长度为5 10 (integer) 5
lpop命令
redis lpop命令用于移除并返回列表的第一个元素。
基本语法如下:lpop key_name
返回值:列表的第一个元素,当列表key不存在时,返回nil。
实例:
1 127.0.0.1:6379> lrange mylist 0 10 2 1) "to" 3 2) "welcome" 4 3) "hello" 5 4) "home" 6 5) "world" 7 127.0.0.1:6379> llen mylist 8 (integer) 5 9 127.0.0.1:6379> lpop mylist #取出key为mylist列表的第一个值 10 "to" 11 127.0.0.1:6379> lrange mylist 0 10 12 1) "welcome" 13 2) "hello" 14 3) "home" 15 4) "world"
lpush命令
该命令将一个或多个值插入到列表头部,如果key不存在,一个空列表会被创建并执行lpush操作,当key存在但不是列表类型时,返回一个错误。
基本语法如下:lpush key_name value1 value2 ... valuen
返回值:执行lpush命令后,列表的长度。
实例:
1 127.0.0.1:6379> lpush mylist 232 (integer) 5 #5为返回的列表的长度 3 127.0.0.1:6379> lrange mylist 0 -1 4 1) "23\\" 5 2) "welcome" 6 3) "hello" 7 4) "home" 8 5) "world"
lpushx命令
将一个值插入到已存在的列表头部,列表不存在时操作无效。
基本语法:lpushx key_name value1 value2 ... valuen
返回值:lpushx命令执行之后,列表的长度。
实例:
1 127.0.0.1:6379> lrange mylist 0 -1 2 1) "23\\" 3 2) "welcome" 4 3) "hello" 5 4) "home" 6 5) "world" 7 127.0.0.1:6379> lpushx mylist sdsd #插入到列表头部 8 (integer) 6 9 127.0.0.1:6379> lrange mylist 0 -1 10 1) "sdsd" 11 2) "23\\" 12 3) "welcome" 13 4) "hello" 14 5) "home" 15 6) "world" 16 127.0.0.1:6379> lpushx name sd #返回错误,0代表错误 17 (integer) 0
lrange 命令
作用:获取列表指定范围内的元素。
实例:
1 127.0.0.1:6379> lrange mylist 0 -1 2 1) "sdsd" 3 2) "23\\" 4 3) "welcome" 5 4) "hello" 6 5) "home" 7 6) "world"
lrem 命令
作用:移除列表元素。
基本语法:lrem key_name count value
返回值:被移除元素的数据,列表不存在时返回0.
实例:
1 127.0.0.1:6379> keys * 2 (empty list or set) 3 127.0.0.1:6379> rpush mylist hello 4 (integer) 1 5 127.0.0.1:6379> rpush mylist hello 6 (integer) 2 7 127.0.0.1:6379> rpush mylist foo 8 (integer) 3 9 127.0.0.1:6379> rpush mylist home 10 (integer) 4 11 127.0.0.1:6379> rpush mylist hello 12 (integer) 5 13 127.0.0.1:6379> rpush mylist home 14 (integer) 6 15 127.0.0.1:6379> rpush mylist hello 16 (integer) 7 17 127.0.0.1:6379> lrange mylist 0 -1 18 1) "hello" 19 2) "hello" 20 3) "foo" 21 4) "home" 22 5) "hello" 23 6) "home" 24 7) "hello" 25 127.0.0.1:6379> lrem mylist -2 "hello" 26 (integer) 2 27 127.0.0.1:6379> lrange mylist 0 -1 28 1) "hello" 29 2) "hello" 30 3) "foo" 31 4) "home" 32 5) "home"
lset 命令
lset命令通过索引来设置元素的值。
当索引参数超出范围,或对一个空列表进行lset时,返回一个错误。
基本语法:lset key_name index value
返回值:操作成功返回ok,否则返回错误信息。
实例:
1 127.0.0.1:6379> lrange mylist 0 -1 2 1) "hello" 3 2) "hello" 4 3) "foo" 5 4) "home" 6 5) "home" 7 8 127.0.0.1:6379> lrange mylist 0 0 9 1) "hello" 10 11 127.0.0.1:6379> lset mylist 0 welcome 12 OK 13 127.0.0.1:6379> lrange mylist 0 0 14 1) "welcome" 15 127.0.0.1:6379> lset mylist 4 "superman" 16 OK 17 127.0.0.1:6379> lrange mylist 0 -1 18 1) "welcome" 19 2) "hello" 20 3) "foo" 21 4) "home" 22 5) "superman"
ltrim命令
ltrim对一个列表进行修复(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
下标0表示列表的第一个元素,以1表示列表的第二个元素,以此类推,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
基本语法:ltrim key_name start stop
实例:
1 127.0.0.1:6379> lrange mylist 0 -1 2 1) "welcome" 3 2) "hello" 4 3) "foo" 5 4) "home" 6 5) "superman" 7 127.0.0.1:6379> ltrim mylist 1 3 8 OK 9 127.0.0.1:6379> lrange mylist 0 -1 10 1) "hello" 11 2) "foo" 12 3) "home"