ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

为什么说 Redis 是“穷人版 MQ”?这道社招题给你答案

为什么说 Redis 是“穷人版 MQ”?这道社招题给你答案

那天面试官端起咖啡,笑着问我一句:“你用 Redis 做过异步队列吗?是怎么实现的?

我脑子里瞬间浮现的,不是 API,而是一家凌晨三点还在出单的外卖店、一堆等着被做掉的订单,以及一个永远不加班却扛下所有活的 Redis。

今天,我们就用一个故事,把Redis 异步队列这道社招高频题彻底讲透。

故事开场:凌晨三点的外卖店

先给你讲个故事。

凌晨三点,我朋友老王开了一家外卖店,生意爆火。问题来了:

  • 下单的人很多
  • 做饭的人就那几个
  • 老板不想让顾客一直等在前台

于是老王想了个办法。顾客下单后,把订单写在小票上,丢进一个盒子里;厨师有空了,就从盒子里拿一张出来做。这个“盒子”,本质上就是一个——队列

而在程序世界里,这个盒子,很可能就是Redis

为什么要用“异步队列”?

在面试官眼里,你如果直接说“我用 Redis 的 list 实现队列”,那只是及格。但如果你能说清楚:为什么要用异步队列,那才是加分项。

我们先站在业务角度看:

核心问题只有一个:我不想让用户等“没必要等的事情”

于是,异步队列就登场了:

  • 主线程:只做核心逻辑
  • 次要任务:丢进队列慢慢处理

而 Redis,刚好满足几个关键条件:

  • 内存级别,速度快
  • API 简单
  • 运维成本低
  • 单机就能用

所以,在很多中小系统里,Redis 就是“穷人版 MQ”

最基础实现:List + rpush + lpop

我们先从最经典、也是面试官最爱问的方案开始。

1、用 List 当队列

Redis 的List,天生就是一个双端队列

  • rpush:从右边塞数据
  • lpop:从左边取数据

完美

返回列表