专栏首页晨曦破晓の家Redis的各种数据类型实践---List结构

Redis的各种数据类型实践---List结构

Redis 列表(list)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含2的32次方减1 个元素 (4294967295, 每个列表超过40亿个元素)。

常用命令

LPUSH key value [value ...] //将一个或多个值value插入到key列表的表头(最左边)
RPUSH key value [value ...]//将一个或多个值value插入到key列表的表尾(最右边)
LPOP key//移除并返回key列表的头元素
RPOP key//移除并返回key列表的尾元素
LRANGE key start stop//返回列表key中指定区间内的元素,区间以偏移量start和stop指定

BLPOP key [key ...] timeout//从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
BRPOP key [key ...] timeout //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
LLEN key //list的长度

应用场景

1、实现常见的数据结构

基于List的特性及丰富的命令可以实现常用的集中数据结构

1)Stack (栈) LPUSH +LPOP ,FILO 先入后出 结合LPUSH和LPOP命令实现栈的先进后出的特性,LPUSH从左边入栈,LPOP从左边出栈,先进入的后出来。相当于入口出口是一个。

2)Queue (队列)= LPUSH +RPOP ,FIFO 先进先出

结合LPUSH和RPOP命令实现队列的先进先出的特性,LPUSH从左边入队,RPOP从右边出队,先进来的先出来。相当于入口出口各在两边。

3)Blocking MQ 阻塞队列 = LPUSH+BRPOP

结合LPUSH和BRPOP实现阻塞队列,BRPOP比RPOP多了一个timeout的参数,是一个等待的最大时间,如果在这个时间内拿不到数据则返回空。

2、微博消息公众号消息 例如:个人微博账户关注了人民网、华为等大V,现在华为发了一条微博 ID为3306,我关注了他,那么就会往我的msg队列push 这个微博ID。当我打开微博时,就会从我的专属队列里去前几个微博ID展示给我。 1)华为发了微博,ID 3306 消息入队

LPUSH  msg:{个人-ID}  3306

2)人民网发了个ID为3308的消息,消息入队

LPUSH  msg:{个人-ID}  3308

3)我登陆进去展示最新消息,就从个人专属消息队列取最新的5条显示

LRANGE    msg:{个人-ID}  0 5

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis的各种数据类型实践-ZSet

    我们都知道微博热点,新闻热榜,投票排行榜等都有一个排名的概念,如下图百度热榜,展示的是实时的点击量比较高的新闻(假设这些新闻的ID为1001-1010),每个新...

    用户4464623
  • Redis的各种数据类型实践-Set

    Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添...

    用户4464623
  • Redis的各种数据类型实践--String字符串

    Redis作为一款NoSQL内存数据库,其丰富的数据类型、简单易用的命令、单机可达10万的高并发(官方数据),从面世以来就深受广大用户的喜爱。Redis的五种数...

    用户4464623
  • Nodejs笔记(三)

    我是攻城师
  • 每周分享第 28 期

    欢迎投稿,请前往 GitHub 的 ruanyf/weekly 提交 issue。

    ruanyf
  • 堆排序

    Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]

    用户2909867
  • LeetCode 107. 二叉树的层次遍历 II

    给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

    TrueDei
  • es6 --- 功能

    标记模板文字还有一个额外的好处;向目标函数传递一个从字符串生成的参数数组。这些参数的排列方式如下:首先,一个字符串数组包围内插值,然后是每个内插值。

    小蔚
  • 常见的网页加载进度条

    我们为什么要做网页加载进度条? 是为了让用户的等待不再枯燥,让用户有一个等待的目标. 为什么要页面加载? 这些网站打开后网页上面需要加载一些控件以使网页上...

    河湾欢儿
  • 50行代码的MVVM,感受闭包的艺术

    name 和 age 被响应式的渲染出来,在 2s 后我们修改了 name 的值,同样能在页面正确更新。

    Nealyang

扫码关注云+社区

领取腾讯云代金券