【吊打面试官系列】Redis篇 -使用过 Redis 做异步队列么,你是怎么用的?

大家好,我是锋哥。今天分享关于 【使用过 Redis 做异步队列么,你是怎么用的?】面试题,希望对大家有帮助;

使用过 Redis 做异步队列么,你是怎么用的?

一般使用 list 结构作为队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当 sleep 一会再重试。

如果对方追问可不可以不用 sleep 呢?

list 还有个指令叫 blpop,在没有消息的时候,它会阻塞住直到消息到来。如果对方追问能不能生产一次消费多次呢?使用 pub/sub 主题订阅者模式,可以实现 1:N 的消息队列。

如果对方追问 pub/sub 有什么缺点?

在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如 RabbitMQ等。

如果对方追问 redis 如何实现延时队列?

我估计现在你很想把面试官一棒打死如果你手上有一根棒球棍的话,怎么问的这么详细。但是你很克制,然后神态自若的回答道:使用 sortedset,拿时间戳作为score,消息内容作为 key 调用 zadd 来生产消息,消费者用 zrangebyscore 指令获取 N 秒之前的数据轮询进行处理。到这里,面试官暗地里已经对你竖起了大拇指。但是他不知道的是此刻你却竖起了中指,在椅子背后。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 14:26:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 14:26:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 14:26:01       82 阅读
  4. Python语言-面向对象

    2024-04-04 14:26:01       91 阅读

热门阅读

  1. Spring MVC 的返回值有哪些

    2024-04-04 14:26:01       37 阅读
  2. MySQL之事务相关详细总结

    2024-04-04 14:26:01       38 阅读
  3. 金融应用出海市场与营销洞察

    2024-04-04 14:26:01       34 阅读
  4. I.MX6ULL的MAC网络外设设备树实现说明二

    2024-04-04 14:26:01       37 阅读
  5. ubuntu 使用 apt 安装、卸载 mysql

    2024-04-04 14:26:01       33 阅读
  6. PyQt6猜数字小游戏

    2024-04-04 14:26:01       38 阅读
  7. YOLOv5 | NMS | 源码解析

    2024-04-04 14:26:01       28 阅读
  8. 适配器模式:桥接不兼容的接口

    2024-04-04 14:26:01       33 阅读