Redis列表
1、Redis Blpop命令:
(1)说明:Redis Blpop命令移出并获取列表的第一个元素;如果列表没有元素会阻塞列表直到等到超时或发现可弹出元素为止
(2)语法:redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT;如果列表为空,返回一个nil;否则返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值
(3)实例:以下实例中,操作会被阻塞,如果指定的列表key list1存在数据则会返回第一个元素,否则在等待100s后会返回nil。如下图:
2、Redis Brpop命令
(1)说明:Redis Brpop命令移出并获取列表最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
(2)语法:redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT ;假如在指定时间内没有任何元素被弹出,则返回一个nil和等待时长;反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值
(3)实例:以下实例中,操作会被阻塞,如果指定的列表 key list1 存在数据则会返回第一个元素,否则在等待100s后会返回nil,如下图:
3、Redis Brpoplpush命令
(1)说明:Redis Brpoplpush命令从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
(2)语法:redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT ;假如在指定时间内没有任何元素被弹出,则返回一个nil和等待时长;反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长
(3)实例:没有值的情况:
有值的情况:
# 非空列表
redis> BRPOPLPUSH msg reciver 500"hello moto" # 弹出元素的值
(3.38s) # 等待时长
redis> LLEN reciver(integer) 1
redis> LRANGE reciver 0 01) "hello moto"
4、Redis Lindex 命令
(1)说明:Redis Lindex 命令用于通过索引获取列表中的元素;你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表倒数第二个元素,以此类推。
(2)语法:redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION ;列表中下标为指定索引值的元素;如果指定索引值不在列表的区间范围内,返回nil
(3)实例:
5、Redis Linsert命令
(1)说明:Redis Linsert命令用于在列表的元素前或者后插入元素,当指定元素不存在于列表时,不执行任何操作;当列表不存在时,被视为空列表,不执行任何操作;如果key不是列表类型,返回一个错误。
(2)语法:redis 127.0.0.1:6379> LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE ;如果命令执行成功,返回插入操作完成之后,列表的长度;如果没有找到指定元素,返回-1;如果key不存在或空列表,返回0。
(3)实例:
6、Redis Llen命令
(1)说明:Redis Llen命令用于返回列表的长度;如果列表不存在,则key被解释为一个空列表,返回0;如果key不是列表类型,返回一个错误
(2)语法:redis 127.0.0.1:6379> LLEN KEY_NAME;返回列表的长度
(3)实例:
7、Redis Lpop命令
(1)说明:Redis Lpop命令用于移除并返回列表的第一个元素;
(2)语法:redis 127.0.0.1:6379> Lpop KEY_NAME ;返回列表的第一个元素;当列表key不存在时,返回nil;
(3)实例:
实际返回:
预计返回:
8、Redis Lpush命令
(1)说明:Redis Lpush命令将一个或多个值插入到列表头部;如果key不存在,一个空列表会被创建并执行LPUSH操作;当key存在但不是列表类型时,返回一个错误;
注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值。
(2)语法:redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN;执行LPUSH命令后,返回列表的长度
(3)实例:
9、Redis Lpushx命令(对比 8 是否有不同区别)
(1)说明:Redis Lpushx命令将一个值插入到已存在的列表头部,列表不存在时,操作无效
(2)语法:redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN;LPUSHX命令执行后,返回列表的长度
(3)实例:
10、Redis Lrange命令
(1)说明:Redis Lrange命令返回列表中指定区间内的元素,区间以偏移量START和END指定;其中0表示列表的第一个元素,1表示列表的第二个元素,以此类推;你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
(2)语法:redis 127.0.0.1:6379> LRANGE KEY_NAME START END;返回一个列表,包含指定区间内的元素
(3)实例:
11、Redis Lrem命令
(1)说明:Redis Lrem命令根据参数COUNT的值,移除列表中与参数VALUE相等的元素,COUNT的值可以是以下几种:
count>0:从表头开始向表尾搜索,移除与VALUE相等的元素,数量为COUNT;
count<0:从表尾开始向表头搜索,移除与VALUE相等的元素,数量为COUNT的绝对值;
count=0:移除表中所有与VALUE相等的值
(2)语法:redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE;被移除元素的数量,列表不存在时返回0
(3)实例:
12、Redis Lset命令
(1)说明:Redis Lset命令通过索引来设置元素的值;当索引参数超出范围,或对一个空列表进行LSET时,返回一个错误
(2)语法:redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE;操作成功返回ok,否则返回错误信息
(3)实例:
13、Redis Ltrim命令
(1)说明:Redis Ltrim命令对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除;下标0表示列表的第一个元素,以1表示列表的第二个元素,以此类推;你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。
(2)语法:redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP;命令执行成功时,返回ok
(3)实例:
14、Redis Rpop命令:
(1)说明:Redis Rpop命令用于移除返回列表的最后一个元素
(2)语法:redis 127.0.0.1:6379> RPOP KEY_NAME ;返回移除的最后一个元素;当列表不存在时,返回nil
(3)实例:
15、Redis Rpoplpush命令
(1)说明:Redis Rpoplpush命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回
(2)语法:redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME;返回被弹出的元素
(3)实例:
16、Redis Rpush命令
(1)说明:Redis Rpush命令用于将一个或多个值插入到列表的尾部(最右边);如果列表不存在,一个空列表会被创建并执行RPUSH操作;当列表存在但不是列表类型时,返回一个错误;
注意:在 Redis 2.4 版本以前的 RPUSH 命令,都只接受单个 value 值。
(2)语法:redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN;执行RPUSH操作后,列表的长度
(3)实例:
17、Redis Rpushx命令:
(1)说明:Redis Rpushx命令用于将一个值插入到已存在的列表尾部(最右边);如果列表不存在,操作无效
(2)语法:redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN;返回执行Rpush操作后,列表的长度
(3)实例: