12

redis消息队列的使用

 3 years ago
source link: https://www.80shihua.com/archives/2640
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

redis消息队列的使用

很久之前就是知道redis可以作为消息队列使用,但是一直没有实际使用过,今天实际使用了一下,发现还是有一些内容需要注意的。

redis有5个常用数据结构,分别是string,list,set,hash,sorted set, 其中list就是用来作为消息队列的。

消息队列首先它是一个队列,因此底层一定是一个队列,而list通过lpush和rpop就可以实现队列功能,但是仅仅是队列还远远不能构成为一个消息队列,因为作为消息队列,它最重要的就是需要有监听功能,也就是我们需要能够在队列中有消息的时候能够及时处理。

那么rpop显然是不合适的,因为它会一直查询队列状态,消耗资源,这个时候我们应该使用brpop,这个命令会移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。因为有了阻塞,可以避免资源的浪费。

那么既然redis可以实现消息队列,为什么几乎没有人使用呢,因为作为消息队列,还有几个点是我们非常注重的。

  • 消息的可靠性
  • 消息的重复消费

redis的list消费消息只能消费一次,不能重复消费,这在某些情况显然是不合适的。另外它没有可靠的确认机制,我们需要自己去实现,很复杂,而且可能考虑的不是很周全,因此,让专业的人做专业的事,是我们最应该做的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK