Redis 队列

本文介绍了Redis中队列的实现,包括阻塞队列、可靠队列、旋转队列和优先权队列。阻塞队列在数据为空时会阻塞,有数据后通知消费者。可靠队列利用RPOPLPUSH确保消息不会丢失。旋转队列允许元素在列表中循环。优先权队列按优先级取出元素。此外,文章讨论了队列在系统解耦、流量削峰等场景的应用。
摘要由CSDN通过智能技术生成

队列的实现

举例:
队列主要用在系统解耦、流量削峰、异步处理、数据顺序处理等场景。新手在使用时可能会犯一些常见的错误。下面讲一个新手容易犯的错误,在这个示例中把队列的入队、出队和Redis存储节点的主从关系给混淆了,示例如下

存储:
Redis主节点M, 使用数据List类型做为队列,列表名称M (标记为M.L,意为主节点上的List)
Redis从节点S, 做为Redis主节点的备,有和主节点相同的列表名称L (标记为S.L,意为从节点上的List

应用程序:
应用名称App

操作:
入队命令: LPUSH M.L Data
出队命令: RPOP S.L

我们知道,Redis主从节点数据的流向是主节点->从节点,队列中一般数据也是队尾(入队)-> 队头(出队),这两个数据流向混淆后就会出现以上的错误。

5401760-af9b860981fa84e9.png
image.png

上图显然不是我们想要的结果,这种设计导致的问题是Redis主节点使用的内存会不断增长直至触发Redis的LRU策略导致数据丢失或者无法入队。Redis的从节点S仅仅是做为主节点M的一个备份节点存在的。

5401760-e376a00ef3a07fd1.png
image.png

阻塞队列

阻塞队列是一种特

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值