组件学习

Redis列表 API

2019-02-24  本文已影响67人  若兮缘

列表结构

key仍然是一个字符串,value是一个有序队列,且可以重复,左右两边插入弹出。

可以计算列表的长度-llen,删除列表中指定的某个元素-lrem,获取子列表-lrange,按照索引获取列表值-lindex

列表重要API

增相关

命令演示效果如图

删相关

lpop、rpop、lrem命令演示效果

ltrim命令演示效果
ltrim命令在做一些大的列表删除时是非常有用的,假设数据量是上百万,如果直接执行del key会将redis阻塞掉,我们可以使用ltrim每次裁剪10万分之一数据,最后达到一个删除的效果。

查相关

命令演示效果如图

改相关
命令演示

实战-TimeLine

实际上就是微博的时间轴功能,会将你关注的用户最新的微博按照从新到旧的顺序来排列,这和我们的列表是非常类似的,可以使用类似lpush、rpush、lpop、rpop这样的功能,还可以按照每10页做一个分页。
比如微博列表顺序是按照右图这样的排列规则,就是以关注用户的微博ID作为key,而用户的如微博内容、点赞数等等信息则可以另外存储到一个比如哈希结构里,通过微博ID就可以进行一个关联。
假设你关注的人更新了微博,就可以使用lpush命令去更新list数据,使用lrange命令获取最新的10条微博,然后通过hmget命令去哈希中取出微博的具体内容。

查缺补漏

执行这两个命令会有一个阻塞的过程,如果设置了非0的timeout,那么当列表为空时,命令不会立即返回结果,而是阻塞等待直到超时,或者当有新的值被插入时就会进行获取并返回。在实现类似消息队列功能时会非常有帮助。

小的TIPS

  1. LRUSH + LPOP = Stack(栈)
  2. LPUSH + RPOP = Queue(队列)
  3. LPUSH + LTRIM = Capped Collection(固定数量的列表)
  4. LPUSH + BRPOP = Message Queue(消息队列)
上一篇下一篇

猜你喜欢

热点阅读