当前位置: 首页 > 后端技术 > Python

redis和rabbitmq作为消息队列的区别

时间:2023-03-26 00:05:09 Python

消息队列(MessageQueue)是一种应用程序之间的通信方式。消息发送后可以立即返回,消息系统保证消息的可靠传递。消息发布者不管谁得到消息只把消息发布到MQ,消息使用者不管谁发布消息只从MQ拿到消息。这样,发布者和用户都不需要知道对方的存在。Redis在我的学习过程中,redis是一个内存数据库,数据类型丰富。当然,它也支持队列。Redis支持数据持久化和主从集群。Redis不仅支持简单的key-value类型数据,还提供list、set、zset、hash等数据结构的存储。RabbitMQ是专用于队列的框架。在队列方面,它比redies队列有更好的性能。支持的功能更多,消息的可靠性更强。可以根据路由规则选择进入哪个队列,实现更详细的消息。分发可靠性redis:没有相应的机制来保证消息的可靠消费。如果发布者在没有对应的订阅者的情况下发布消息,则消息会丢失,不会存储在内存中;rabbitmq:有消息消费确认机制,如果消息发布后队列中没有消费者消费,则消息会一直保存在队列中,直到有消费者消费消息,从而保证消息的可靠消费,那么rabbitmq消息是如何存储的呢?关于什么?(后续更新);real-timeredis:实时性高,redis是一个高效的缓存服务器,所有的数据都保存在内存中,因此具有更高的实时消费者负载均衡:rabbitmq队列可以同时被多个消费者监听消费,但是每条消息只能被消费一次,由于rabbitmq的消费确认机制,可以根据消费者的消费能力调整自己的负载;redis发布订阅模式,一个队列可以同时被多个消费者订阅,当有消息到达时,消息会依次发送给每个订阅者。她是消息广播的一种形式。Redis本身不做消费者负载均衡,消费效率存在瓶颈;persistentredis:redis的持久化,它针对的是整个redis缓存的内容。它有两种持久化方式:RDB和AOF(redis持久化方式,后续更新),可以将整个redis实例持久化到磁盘,做数据备份,防止异常情况导致数据丢失。rabbitmq:queue,每条消息可以选择性的持久化,持久化粒度更小,更灵活;队列监控rabbitmq实现了一个后台监控平台,在上面可以看到所有创建的队列的详细信息,良好的后台管理平台可以更好的为我们所用;redis没有所谓的监控平台。总结redis:轻量级、低延迟、高并发、低可靠性;rabbitmq:重量级、高可靠、异步、不保证实时;rabbitmq是一个专用的AMQP协议队列,它的优势在于提供可靠的队列服务,并且可以异步,而redis主要用于缓存,利用redis的发布订阅模块可以实现及时和低可靠的功能.更多技术咨询请关注:gzitcast