redis list数据结构操作学习

转自:https://zhuanlan.zhihu.com/p/76578547

1.插入元素

> rpush mylist A   # 从右侧插入
(integer) 1
> rpush mylist B
(integer) 2
> lpush mylist first
(integer) 3
> lrange mylist 0 -1    // 这里使用 0 -1 表示显示所有元素,注意是:0 空格 -1,0 代表第一个元素,-1 代表最后一个元素
1) "first"
2) "A"
3) "B"

> rpush mylist 1 2 3 4 5 "foo bar"  # 插入多个
(integer) 9
> lrange mylist 0 -1   // 从左到右查看元素
1) "first"
2) "A"
3) "B"
4) "1"
5) "2"
6) "3"
7) "4"
8) "5"
9) "foo bar"

2.pop元素

> rpush mylist a b c
(integer) 3
> rpop mylist  #从右到左依次pop元素
"c"
> rpop mylist
"b"
> rpop mylist
"a"

> rpop mylist   #空list
(nil)

 

3.设置上限 

> rpush mylist 1 2 3 4 5
(integer) 5
> ltrim mylist 0 2  # 只从索引 02 中获取 List 元素,其他所有内容都将被丢弃
OK
> lrange mylist 0 -1
1) "1"
2) "2"
3) "3"

  

4.删除指定元素

>LREM key count VALUE  #命令返回值:被移除元素的数量。 列表key不存在时返回 0
  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
  • count = 0 : 移除表中所有与 VALUE 相等的值。

时间复杂度: O(N+M),其中N是列表的长度,M是移除的元素的数量。(不太理解这个复杂度怎么算的。)

4.应用场景

记住用户发布到社交网络的最新更新。请假设您的主页显示在照片是共享社交网络中发布的最新照片,并且您希望加快访问速度。

  • 每次用户发布新照片时,我们都会将其 ID 添加到带有 LPUSH 的 List 中。
  • 当用户访问主页时,我们使用LRANGE 0 9 来获取最新的 10 张照片。

 lpop弹出所有元素后,键值 key 不再存在。

posted @ 2024-04-22 10:22  lypbendlf  阅读(1)  评论(0编辑  收藏  举报