redis系列(六)之List(列表)相关命令及应用

一、常见操作

  • list 类似一个双端队列,即可以从左边 push 和 pop,也可以从右边 push 和 pop,底层其实是一个单链表
  • redis里面,我们可以把list玩成 栈、队列、阻塞队列
  • 所有的list命令都是用l开头的,Redis不区分大小命令

lpush list01 1 2 3 4 5  key 为 list01,value 为 1,2,3,4,5,从左向右push 

lpush

rpush list01 a b 从右往左向 list01 中 push a b

rpush

lrange list01 0 -1 从左向右获取 list01 中的所有元素

lrange

lrange list01 0 3从左向右获取 list01 中的前四个数据

 lrange

注:没有 rrange ,没有 rrange,没有 rrange! 

lpop list01 弹出 list01 中最左边的元素

lpop

rpop list01 弹出 list01 最右边的元素

 rpop

lindex list01 2 取 list01 索引为 2 的元素

lindex

llen list01获得 list01 中元素的个数

llen

lrem list01 2 3 从左往右删除 list01 中的 2 个 3

lrem

10 ltrim list01 1 3 截取索引从 1 到 3 的值后再赋值给 list01

ltrim

11 rpoplpush list01 list02 把 list01 最右边的一个元素 pop 出来,从左边 push 进 list02

rpoplpush

12 lset list01 1 4设置 list01 的索引为 1 的位置的值为 4

lset

13 linsert list01 before 3 1 在 list01 所指向的列表的值为 3 的元素前插入 1

linsert

14 linsert list01 after 3 9 在 list01 所指向的列表的值为 3 的元素后插入 9

linsert

15 小结

  • 实际上是一个链表,before Node after leftright 都可以插入
  • 值如果key    不存在,创建新的链表
  • 如果key存在,新增内容
  • 如果移除了所有值,空链表,也代表不存在!
  • 在两边插入或者改动值,效率最高!    中间元素,相对来说效率会低一点~
  • 消息排队!消息队列  (Lpush  Rpop),  栈(  Lpush Lpop)!

二、应用场景

list类型是简单的字符串列表,按照插入顺序排序。每个列表最多可以存储 2^32 - 1 个元素(40多亿)

list类型主要有以下应用场景:

  1. 消息队列:list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,故而可以用Redis的list类型实现简单的点对点的消息队列
  2. 排行榜: list类型的lrange命令可以分页查看队列中的数据. 但是只有定时计算的排行榜才适合使用list类型存储(实时不行).
  3. 最新列表: list类型的lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表,如朋友圈的点赞列表、评论列表。

猜你喜欢

转载自blog.csdn.net/jatej/article/details/107237289