1. 首页
  2. 数据库
  3. Redis

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



**回答**:一般使用 list 结构作为队列,rpush 生产消息,lpop 消费消息。当 lpop 没有消息的时候,要适当 sleep 一会再重试。如果对方追问可不可以不用 sleep 呢?list 还有个指令叫 blpop,在没有消息的时候,它会阻塞住直到消息到来。

**追问**:如果对方追问能不能生产一次消费多次呢?
答:使用 pub/sub 主题订阅者模式,可以实现1:N 的消息队列。

**又追问:** pub/sub 有什么缺点?
**答**:在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如 RabbitMQ等。

**再次追问**:redis 如何实现延时队列?
**答**:使用 sortedset,拿时间戳作为score,消息内容作为 key 调用 zadd 来生产消息,消费者用 zrangebyscore 指令获取 N 秒之前的数据轮询进行处理。

发布者:admin,如若转载,请注明出处:https://ai1024.vip/27832.html

QR code
//