redis的list数据类型结构操作

列表

  • 存储多个有序的字符串
  • 一个列表最多可以存储(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)

Guess you like

Origin blog.csdn.net/weixin_44375561/article/details/121829476