Redis的 list 数据结构常用来作为 异步消息队列 使用,使用 rpush/lpush 操作 入队 ,使用 lpop/rpop 来操作 出队
![82794c9661650c6283dddc070e6dccea.png](https://img-blog.csdnimg.cn/img_convert/82794c9661650c6283dddc070e6dccea.png)
> rpush my-queue apple banana pear(integer) 3> llen my-queue(integer) 3> lpop my-queue"apple"> llen my-queue(integer) 2> lpop my-queue"banana"> llen my-queue(integer) 1> lpop my-queue"pear"> llen my-queue(integer) 0> lpop my-queue(nil)
空队列
- 如果队列为空,客户端会陷入 pop的死循环 , 空轮询 不仅拉高了 客户端的CPU , Redis的QPS 也会被拉高
- 如果空轮询的客户端有几十个, Redis的慢查询 也会显著增加,可以尝试让客户端线程 sleep 1s
- 但睡眠会导致消息的 延迟增大 &#