redis list
list
redis list是字符串列表,按照插入顺序排序.可以添加一个元素到列表的头部和尾部.一个列表最多可以包含$2^{32}-1$ 个元素.
1.常用命令
命令 描述 blpop key1 [key2] timeout移出并获取列表的第一个元素,如果列表
没有元素会阻塞列表直到等待超时或发现可弹出元素为止brpop key1 [key2] timeout移出并获取列表的最后一个元素,如果列表
没有元素会阻塞列表直到等待超时或发现可弹出元素为止brpoplpush source destination timeout从列表中弹出一个值,将弹出的元素插入到
另外一个列表中并返回它; 如果列表没有元素会
阻塞列表直到等待超时或发现可弹出元素为止。lindex key index通过索引获取列表中的元素 `linsert key before after pivot value` llen key获取列表长度 lpop key移出并获取列表的第一个元素 lpush key value1 [value2]将一个或多个值插入到列表头部 lpushx key value将一个值插入到已存在的列表头部 lrange key start stop获取列表指定范围类的元素 lrem key count value移出列表元素. lset key index value通过索引设置列表元素的值 ltrim key start stop对一个列表进行修剪(trim),就是说,让列表
只保留指定区间内的元素,不在指定区间之内的元素都将被删除rpop key移除并获取列表的最后一个元素 rpoplpush source destination移除列表的最后一个元素,并将该元素添加到另一个列表并返回 rpush key value1 [value2]在列表末尾添加一个或多个值 rpushx key value对已存在的列表末尾添加值.
1.添加
添加列表元素
左添加
lpush
lpushx右添加
rpush
prushx# 左添加, # 添加单个元素 127.0.0.1:6379> lpush languages python (integer) 1 # 添加重复元素 127.0.0.1:6379> lpush languages python (integer) 2 # 测量长度 127.0.0.1:6379> llen languages (integer) 2 # 按照索引输出 127.0.0.1:6379> lindex languages 0 "python" 127.0.0.1:6379> lindex languages 1 "python" # 按照范围输出 127.0.0.1:6379> lrange languages 0 -1 1) "python" 2) "python" # 添加多个值 127.0.0.1:6379> lpush mylist a b c (integer) 3 127.0.0.1:6379> lrange mylist 0 -1 1) "c" 2) "b" 3) "a" # 右添加 127.0.0.1:6379> lrange languages 0 -1 1) "python" 2) "python" 127.0.0.1:6379> rpush languages radis (integer) 3 127.0.0.1:6379> lrange languages 0 -1 1) "python" 2) "python" 3) "radis" 127.0.0.1:6379>
2.删除
删除列表元素
左删除
lpop
blpop右删除
rpop
brpop
rpoplpush
brpoplpush综合
lrem key count value:
count>0:从头部开始搜索,移除与value相等的元素,数量为countcount<0:从尾部开始搜索,移除与value相等的元素,数量为count的绝对值.count=0:移除表中所有与value相等的元素# 查看列表所有元素 127.0.0.1:6379> lrange languages 0 -1 1) "python" 2) "python" 3) "radis" # 从头部移除第一个元素 127.0.0.1:6379> lpop languages "python" 127.0.0.1:6379> lrange languages 0 -1 1) "python" 2) "radis" # 阻塞式移除头部的第一个元素,timeout=3(秒) 127.0.0.1:6379> blpop languages 3 1) "languages" 2) "python" # 查看最后的元素. 127.0.0.1:6379> llen languages (integer) 1 127.0.0.1:6379> lrange languages 0 -1 1) "radis" # lrem # 新生成一个列表 127.0.0.1:6379> lpush vip 'Jack' 'Bob' 'Parry' 'Jack' 'Bob' 'Hary' (integer) 6 127.0.0.1:6379> llen vip (integer) 6 127.0.0.1:6379> lrange vip 0 -1 1) "Hary" 2) "Bob" 3) "Jack" 4) "Parry" 5) "Bob" 6) "Jack" # 从头部开始移除 1 个 Jack 127.0.0.1:6379> lrem vip 1 Jack (integer) 1 127.0.0.1:6379> lrange vip 0 -1 1) "Hary" 2) "Bob" 3) "Parry" 4) "Bob" 5) "Jack" # 从尾部开始移除 1 个Jack 127.0.0.1:6379> lrem vip -1 Jack (integer) 1 127.0.0.1:6379> lrange vip 0 -1 1) "Hary" 2) "Bob" 3) "Parry" 4) "Bob" # 移除所有的 Bob 127.0.0.1:6379> lrem vip 0 Bob (integer) 2 127.0.0.1:6379> lrange vip 0 -1 1) "Hary" 2) "Parry"
3. 插入
linsert key before/after pivot value:将value插入到列表key中,位于值pivot之前或之后.127.0.0.1:6379> del mylist (integer) 1 127.0.0.1:6379> rpush mylist 'hello' (integer) 1 127.0.0.1:6379> rpush mylist 'world' (integer) 2 127.0.0.1:6379> lrange mylist 0 -1 1) "hello" 2) "world" 127.0.0.1:6379> linsert mylist before 'world' 'there' (integer) 3 127.0.0.1:6379> lrange mylist 0 -1 1) "hello" 2) "there"
4.索引
长度:
llen索引获取值:
lindex替换索引值:
lset key index value索引获取子值(生成新列表):
ltrim索引获取子值(不改变原列表):
lrange# mylist 列表 127.0.0.1:6379> lrange mylist 0 -1 1) "hello" 2) "there" 3) "world" # 通过索引获取值 127.0.0.1:6379> lindex mylist 0 "hello" 127.0.0.1:6379> lindex mylist 1 "there" 127.0.0.1:6379> lindex mylist 2 "world" # 通过索引替换值 127.0.0.1:6379> lset mylist 1 replace OK 127.0.0.1:6379> lrange mylist 0 -1 1) "hello" 2) "replace" 3) "world" # 通过索引生成新的子列表. 127.0.0.1:6379> ltrim mylist 0 1 OK 127.0.0.1:6379> lrange mylist 0 -1 1) "hello" 2) "replace"
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WenYan Blog!
评论








