(基本知识)Redis 列表(List)相关命令函数
1. Blpop :在设定时间内(秒)移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
返回: 第一个元素是弹出元素的 key ,第二个元素是弹出元素的值
如果列表为空,返回一个 nil
127.0.0.1:6379> lpush yzt aaa (integer) 1 127.0.0.1:6379> lpush yzt bbb (integer) 2 127.0.0.1:6379> lpush yzt ccc (integer) 3 127.0.0.1:6379> blpop yzt 3 1) "yzt" 2) "ccc" 127.0.0.1:6379> blpop yztd 3 (nil) (3.10s) 127.0.0.1:6379>
2.Brpop :移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
返回: 第一个元素是弹出元素的 key ,第二个元素是弹出元素的值
如果列表为空,返回一个 nil
127.0.0.1:6379> brpop yzt 3 1) "yzt" 2) "aaa" 127.0.0.1:6379>
3.Brpoplpush :从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
返回: 第一个元素是弹出元素的 key ,第二个元素是弹出元素的值
如果列表为空,返回一个 nil
127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ddd" 3) "ooo" 4) "bbb" 127.0.0.1:6379> brpoplpush yzt ydt 3 "bbb" 127.0.0.1:6379> lrange ydt 0 10 1) "bbb" 127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ddd" 3) "ooo" 127.0.0.1:6379>
4.Lindex :用于通过索引获取列表中的元素。可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。成功返回值 否则返回nil
127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ddd" 3) "ooo" 127.0.0.1:6379> lindex yzt 0 "www" 127.0.0.1:6379> lindex yzt 2 "ooo" 127.0.0.1:6379>
5.Linsert :用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作
LINSERT key BEFORE|AFTER pivot value
成功返回列表长度
列表中的元素不存在返回-1
key不存在或是空列表返回0
127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ddd" 3) "ooo" 127.0.0.1:6379> linsert yzt before ddd ppp (integer) 4 127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ppp" 3) "ddd" 4) "ooo" 127.0.0.1:6379> linsert yzt after ddd mmm (integer) 5 127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ppp" 3) "ddd" 4) "mmm" 5) "ooo" 127.0.0.1:6379>
6.Llen :用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误
127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ppp" 3) "ddd" 4) "mmm" 5) "ooo" 127.0.0.1:6379> llen yzt (integer) 5 127.0.0.1:6379>
7.Lpop 命令用于移除并返回列表的第一个元素,不存在返回nil
127.0.0.1:6379> lrange yzt 0 10 1) "www" 2) "ppp" 3) "ddd" 4) "mmm" 5) "ooo" 127.0.0.1:6379> llen yzt (integer) 5 127.0.0.1:6379> lpop yzt "www" 127.0.0.1:6379> llen yzt (integer) 4 127.0.0.1:6379>
8.Lpush :将一个或多个值插入到列表头部 返回列表长度
127.0.0.1:6379> lpush yzt fff
(integer) 5
127.0.0.1:6379> lrange yzt 0 10
1) "fff"
2) "ppp"
3) "ddd"
4) "mmm"
5) "ooo"
127.0.0.1:6379> lpush yzt hhh lll
(integer) 7
127.0.0.1:6379> lrange yzt 0 10
1) "lll"
2) "hhh"
3) "fff"
4) "ppp"
5) "ddd"
6) "mmm"
7) "ooo"
127.0.0.1:6379>
9. Lpushx 将一个值插入到已存在的列表头部,列表不存在时操作无效 成功返回列表长度
127.0.0.1:6379> lrange ydt 0 10 1) "bbb" 127.0.0.1:6379> lpushx ydt fff (integer) 2 127.0.0.1:6379> lrange ydt 0 10 1) "fff" 2) "bbb" 127.0.0.1:6379> lpushx ydt qqq eee (integer) 4 127.0.0.1:6379> lrange ydt 0 10 1) "eee" 2) "qqq" 3) "fff" 4) "bbb" 127.0.0.1:6379>
10.Lrange 返回列表中指定区间内的元素 偏移量 START 和 END 指定
其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推
可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
127.0.0.1:6379> lrange ydt 0 10 1) "eee" 2) "qqq" 3) "fff" 4) "bbb"
11. Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值
返回被移除元素的数量
127.0.0.1:6379> lrange yzt 0 10 1) "fff" 2) "lll" 3) "hhh" 4) "fff" 5) "ppp" 6) "ddd" 7) "mmm" 8) "ooo" 127.0.0.1:6379> lrem yzt 2 fff (integer) 2 127.0.0.1:6379> lrange yzt 0 10 1) "lll" 2) "hhh" 3) "ppp" 4) "ddd" 5) "mmm" 6) "ooo" 127.0.0.1:6379>
12.Lset 通过索引来设置元素的值 超出索引、空列表返回错误
127.0.0.1:6379> lrange yzt 0 10 1) "lll" 2) "hhh" 3) "ppp" 4) "ddd" 5) "mmm" 6) "ooo" 127.0.0.1:6379> lset yzt 0 plk OK 127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "ppp" 4) "ddd" 5) "mmm" 6) "ooo" 127.0.0.1:6379>
13.Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "ppp" 4) "ddd" 5) "mmm" 6) "ooo" 127.0.0.1:6379> ltrim yzt 0 3 OK 127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "ppp" 4) "ddd" 127.0.0.1:6379>
14.Rpop :用于移除列表的最后一个元素,返回值为移除的元素
127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "ppp" 4) "ddd" 127.0.0.1:6379> rpop yzt "ddd" 127.0.0.1:6379>
15.Rpoplpush :用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回
127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "ppp" 127.0.0.1:6379> lrange ydt 0 10 1) "eee" 2) "qqq" 3) "fff" 4) "bbb" 127.0.0.1:6379> rpoplpush yzt ydt "ppp" 127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 127.0.0.1:6379> lrange ydt 0 10 1) "ppp" 2) "eee" 3) "qqq" 4) "fff" 5) "bbb" 127.0.0.1:6379>
16.Rpush :用于将一个或多个值插入到列表的尾部(最右边) 返回列表长度
127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 127.0.0.1:6379> rpush yzt nnn (integer) 3 127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "nnn" 127.0.0.1:6379>
17.Rpushx :用于将一个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效 返回列表的长度
127.0.0.1:6379> rpushx yzt k (integer) 4 127.0.0.1:6379> lrange yzt 0 10 1) "plk" 2) "hhh" 3) "nnn" 4) "k" 127.0.0.1:6379>