zoukankan      html  css  js  c++  java
  • Redis和MQ的区别

    redis是一个高性能的key-value数据库,支持消息推送功能,可以当做一个轻量级的队列服务器使用。

    redis只是提供一个高性能的、原子操作内存键值队,具有高速访问能力,虽然可以做消息队列的存储,但不具备消息队列的任何功能和逻辑。

    redis2.0开始支持发布/订阅指令,发布者调用redis的pushlish方法往特定的channel发送消息,订阅者在初始化的时候订阅该channel,有消息就会立即接收。

    redis消息推送多用于实时性较高的消息推送,并不保证可靠。MQ保证可靠但有一些延迟。

    redis发布订阅除了表示不同的topic外,并不支持分组。MQ发布消息,多个订阅者可以分组,同一个组里只有一个订阅者会收到该消息。

    mq的优势在于提供可靠的队列服务,可以做到异步,redis主要用于缓存,redis的发布订阅模块,可实现及时性,且可靠性低的功能。

    1.可靠性

    redis:没有机制保证消息的可靠性,发布一条消息没有对应的订阅者的话,这条消息将丢失,不会存在内存中。

    mq:具有消息确认机制,发布一条消息,没有消费者消费该队列,这条消息一直存放在队列中,直到有消费者消费了该条消息,保证消息的可靠消费。

    2.实时性

    redis实时性高,redis是高效的缓存服务器,所有数据到存在内存中,所以具有更高的实时性。

    3.消费者负载均衡

    mq队列可以被多个消费者同时监控消费,但每一条消息只能消费一次,由于mq的消费确认机制,因此能够根据消费者的消费能力调整负载。

    redis发布订阅模式,一个队列可被多个消费者同时订阅,消息到达时,会将消息一次发送给每个订阅者,是一种消息的广播形式,redis本身不做消费者的负载均衡,因此消费效率存在瓶颈。

    4.持久性

    redis:redis的持久化是针对整个redis缓存,可将整个redis实例持久化到磁盘来做备份,以防止异常情况下导致数据丢失。

    mq:每条消息都可以选择持久化,持久化粒度更小,更灵活。

    5.队列监控

    mq实现了后台监控平台,可在平台上看到所有创建的队列的详细情况。redis没有监控平台。

    6.性能

    发布消息时,数据较小时,redis性能高于mq,数据大小超过10K时redis比较慢。读取消息时,无论数据大小,redis性能高于mq。

    总结:

    redis:轻量级,低延迟,高并发,低可靠性。

    mq:重量级,高可靠,一步,不保证实时。

  • 相关阅读:
    HTB-靶机-Charon
    第一篇Active Directory疑难解答概述(1)
    Outlook Web App 客户端超时设置
    【Troubleshooting Case】Exchange Server 组件状态应用排错?
    【Troubleshooting Case】Unable to delete Exchange database?
    Exchange Server 2007的即将生命周期,您的计划是?
    "the hypervisor is not running" 故障
    Exchange 2016 体系结构
    USB PE
    10 months then free? 10个月,然后自由
  • 原文地址:https://www.cnblogs.com/DreamFather/p/14578523.html
Copyright © 2011-2022 走看看