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
相等的元素,数量为count
count<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"