列表
- 存储多个有序的字符串
- 一个列表最多可以存储(2^32)-1个元素
- 利用的push和pop进行列表操作
1.添加
1)rpush
rpush key value [value …]
- 从右边插入元素
127.0.0.1:6379> rpush mylist hello world
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"
2)lpush
lpush key value [value …]
- 从左边插入元素
127.0.0.1:6379> lpush mylist redis mysql mongodb
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mongodb"
2) "mysql"
3) "redis"
4) "hello"
5) "world"
3)linsert
linsert key before|after pivot value
- 向某个元素前或者后插入元素
127.0.0.1:6379> linsert mylist before mysql postgresql
(integer) 6
127.0.0.1:6379> lrange mylist 0 -1
1) "mongodb"
2) "postgresql"
3) "mysql"
4) "redis"
5) "hello"
6) "world"
127.0.0.1:6379> linsert mylist after mysql postgresql
(integer) 7
127.0.0.1:6379> lrange mylist 0 -1
1) "mongodb"
2) "postgresql"
3) "mysql"
4) "postgresql"
5) "redis"
6) "hello"
7) "world"
2.查找
1)lrange
lrange key strat end
- 获取列表指定索引范围所有的元素
- 索引下标从左到右分别是0~n-1
- 索引下标从右到左分别是-1~N
127.0.0.1:6379> lrange mylist 0 -1
1) "mongodb"
2) "postgresql"
3) "mysql"
4) "postgresql"
5) "redis"
6) "hello"
7) "world"
2)lindex
lindex key index
- 获取列表指定索引下标的元素
- 不存在返回nil
127.0.0.1:6379> lindex mylist 0
"mongodb"
127.0.0.1:6379> lindex mylist 10
(nil)
3)llen key
llen key
- 获取列表长度
127.0.0.1:6379> llen mylist
(integer) 7
3.删除
1)lpop
lpop key
- 从列表左侧弹出元素
127.0.0.1:6379> lpop mylist
"mongodb"
127.0.0.1:6379> lpop mylist2
(nil)
2)rpop
rpop key
- 从列表右侧弹出
127.0.0.1:6379> rpop mylist
"world"
3)lrem
lrem key count value
- 删除指定元素
- count>0,从左到右,删除最多count个元素
- count<0,从右到左,删除最多count绝对值个元素
- count=0,删除所有
127.0.0.1:6379> rpush list a b c d a d d e r r j j k k k
(integer) 15
127.0.0.1:6379> lrem list 4 d
(integer) 3
127.0.0.1:6379> lrem list 2 a
(integer) 2
127.0.0.1:6379> lrem list 0 j
(integer) 2
4)ltrim
ltrim key start end
- 按照索引范围修剪列表
- 保留偏移量范围的值,其他的都删除
127.0.0.1:6379> ltrim list 1 3
OK
127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "e"
3) "r"
4.修改
lset key index new_value
- 修改指定索引下的元素
127.0.0.1:6379> lset list 0 hello
OK
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "e"
3) "r"
5.阻塞操作
blpop key [key …] timeout
brpop key [key …] timeout
- timeout:阻塞时间,单位秒
6.列表命令时间复杂度
命令 | 时间复杂度 |
---|---|
rpush | O(k) |
lpush | O(k) |
linsert | O(n) |
lrange | O(s+n) |
lindex | O(n) |
llen | O(1) |
lpop | O(1) |
rpop | O(1) |
lrem | O(n) |
ltrim | O(n) |
lset | O(n) |
blpop | O(1) |