redis当中的stream类型 为啥非得创建组

为啥非得要给newusers这个stream创建用户消费组呢?这才是关键 我们创建了消费组之后
可以使用多个消费者对这个消费组的元素进行消费 比如命令:
xreadgroup group sendmail shenyi count 1 streams newusers
xreadgroup group sendmail huxiaobai count 1 streams newusers
两个消费者可以同时对消费组进行读取并且存在竞争关系 shenyi读取了的huxiaobai就读取不到了因为已经被消费了
并且shenyi和huxiaobai消费的元素都会被记录到newuser这个stream的pending队列里面 比如执行命令:xinfo groups newusers 你会发现newusers这个stream的pengding = 4 那么shenyi可能消费了2个 huxiaobai可能就消费了2个 假设哈! 正是因为有这个特性 所以比list模拟消息队列好!因为shenyi消费者消费完组里面的元素执行完正常逻辑之后可以通过ack机制
删除pending里面它所对应的元素 huxiaobai也一样
如果正常的业务逻辑执行失败了就不去删除该消费者在pending队列里面的元素 ! 那么这样我们就可以通过查看pending里面元素
知道哪些用户的邮件没有发送! 如果使用list模拟队列的话 正常业务完事了 不管你成功失败
那么list队列里面的元素也就丢失了!除非搞异常补救措施但也不完美!另外list里面你除非开好几个死循环程序去读取list里面的元素进行处理
但是stream当中生成组之后可以有多个消费者对他进行消费 这都是比list模拟队列好的地方 更加强大的地方!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值