Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
使用场景 : 消息队列,时间轴
lpush : 将一个或多个值插入列表头部,如果key是其他类型报错,成功返回列表数量,如果key不存在,先创建一个空列表
127.0.0.1:6379> set yhq 123 OK 127.0.0.1:6379> lpush yhq name age sex (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379> lpush qhh name age sex (integer) 3
lrange : 获取指定范围的值,0开始-1结束(start超出返回空列表,包含end,end超出返回所有)
127.0.0.1:6379> lrange qhh 0 -1 1) "sex" 2) "age" 3) "name"
lpushx : 插入已存在的列表头部,不存在时无效返回0,成功返回列表长度
127.0.0.1:6379> lpushx yhqqhh id (integer) 0 127.0.0.1:6379> lpushx qhh id (integer) 4 127.0.0.1:6379> lrange qhh 0 -1 1) "id" 2) "sex" 3) "age" 4) "name"
rpush : 将一个或多个值插入列表尾部,如果key是其他类型报错,成功返回列表数量
127.0.0.1:6379> rpush qhh class curr (integer) 6 127.0.0.1:6379> lrange qhh 0 -1 1) "id" 2) "sex" 3) "age" 4) "name" 5) "class" 6) "curr"
rpushx: 插入已存在的列表尾部,不存在时无效返回0,成功返回列表长度
127.0.0.1:6379> rpushx q course (integer) 0 127.0.0.1:6379> rpushx qhh course (integer) 7 127.0.0.1:6379> lrange qhh 0 -1 1) "id" 2) "sex" 3) "age" 4) "name" 5) "class" 6) "curr" 7) "course"
llen : 返回列表长度,不存在返回0,不是列表类型报错
127.0.0.1:6379> llen yhq (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379> llen qh (integer) 0 127.0.0.1:6379> llen qhh (integer) 7
lpop : 移除列表中第一个元素并返回,key不存在返回nil
127.0.0.1:6379> lrange qhh 0 -1 1) "id" 2) "sex" 3) "age" 4) "name" 5) "class" 6) "curr" 7) "course" 127.0.0.1:6379> lpop qhh "id" 127.0.0.1:6379> lrange qhh 0 -1 1) "sex" 2) "age" 3) "name" 4) "class" 5) "curr" 6) "course"
rpop : 移除列表最后一个元素并返回,key不存在返回nil
127.0.0.1:6379> lrange qhh 0 -1 1) "sex" 2) "age" 3) "name" 4) "class" 5) "curr" 6) "course" 127.0.0.1:6379> rpop qhh "course" 127.0.0.1:6379> lrange qhh 0 -1 1) "sex" 2) "age" 3) "name" 4) "class" 5) "curr"
rpoplpush : 移除列表最后一个元素,插入到另一个列表头部,返回移除的元素(如果第一个列表为空,返回nil,不执行操作)
127.0.0.1:6379> lrange qhh 0 -1 1) "sex" 2) "age" 3) "name" 4) "class" 5) "curr" 127.0.0.1:6379> lrange yhqqhh 0 -1 1) "name" 127.0.0.1:6379> rpoplpush qhh yhqqhh "curr" 127.0.0.1:6379> lrange yhqqhh 0 -1 1) "curr" 2) "name"
lrem : 根据count的值,移除列表中与val相等的值(count>0,从头部开始,移除count个和val相等的值,<0从尾部移除count个,=0全部),返回被移除的数量,列表不存在返回0
127.0.0.1:6379> lrange qhh 0 -1 1) "age" 2) "name" 3) "name" 4) "name" 5) "name" 6) "sex" 7) "age" 8) "name" 9) "class" 127.0.0.1:6379> lrem qhh 3 name (integer) 3 127.0.0.1:6379> lrange qhh 0 -1 1) "age" 2) "name" 3) "sex" 4) "age" 5) "name" 6) "class"
ltrim : 保留区间内的元素,0开始-1结束(超过范围的下标并不会产生错误:如果 start 超过列表尾部,或者 start > end,结果会是列表变成空表(即该 key 会被移除)。 如果 end 超过列表尾部,Redis 会将其当作列表的最后一个元素。)
127.0.0.1:6379> lrange qhh 0 -1 1) "age" 2) "name" 3) "sex" 4) "age" 5) "name" 6) "class" 127.0.0.1:6379> ltrim qhh 0 2 OK 127.0.0.1:6379> lrange qhh 0 -1 1) "age" 2) "name" 3) "sex"
lindex : 返回索引的值0开始 -1结束(不是列表返回错误,超出长度返回nil)
127.0.0.1:6379> lrange qhh 0 -1
1) "age"
2) "name"
3) "sex"
127.0.0.1:6379> lindex qhh -2
"name"
linsert : 在列表某个元素(before/after)插入val,成功返回列表长度,key没有或者列表不存在返回0,元素不存在返回-1,找到一个元素就ok,不会插入多个
127.0.0.1:6379> lrange qhh 0 -1 1) "age" 2) "name" 3) "hellow" 4) "sex" 127.0.0.1:6379> lpush qhh name (integer) 5 127.0.0.1:6379> lrange qhh 0 -1 1) "name" 2) "age" 3) "name" 4) "hellow" 5) "sex" 127.0.0.1:6379> linsert qhh after name word (integer) 6 127.0.0.1:6379> lrange qhh 0 -1 1) "name" 2) "word" 3) "age" 4) "name" 5) "hellow" 6) "sex" 127.0.0.1:6379> linsert qh after name 123 (integer) 0 127.0.0.1:6379> linsert qhh after name1 123 (integer) -1
lset : 通过索引修改val,成功返回ok,超出索引范围或者空列表返回错误
127.0.0.1:6379> lrange qhh 0 -1 1) "name" 2) "word" 3) "age" 4) "name" 5) "hellow" 6) "sex" 127.0.0.1:6379> lset qhh 0 666 OK 127.0.0.1:6379> lset qhh 10 666 (error) ERR index out of range 127.0.0.1:6379> lrange qhh 0 -1 1) "666" 2) "word" 3) "age" 4) "name" 5) "hellow" 6) "sex"
blpop/brpop : 移除列表第一个/最后一个元素,如果阻塞(没有元素)等待time秒后返回nil,成功返回两个元素,一个key,一个移除元素(先到先得原则)
127.0.0.1:6379> lrange qhh 0 -1 1) "666" 2) "word" 3) "age" 4) "name" 5) "hellow" 6) "sex" 127.0.0.1:6379> blpop qhh 10 1) "qhh" 2) "666" 127.0.0.1:6379> blpop list 10 (nil) (10.02s) 127.0.0.1:6379> lrange qhh 0 -1 1) "word" 2) "age" 3) "name" 4) "hellow" 5) "sex"
brpoplpush : 从一个列表移到另一个列表,没有等待time秒
127.0.0.1:6379> brpoplpush qhh list 3 "sex" 127.0.0.1:6379> lrange qhh 0 -1 1) "word" 2) "age" 3) "name" 4) "hellow" 127.0.0.1:6379> lrange list 0 -1 1) "sex"
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Redis之列表(lists)类型命令 - Python技术站