Redis vs MongoDB

news2024/12/23 1:25:30

Redis vs MongoDB

通常情况下,应用系统的技术选型,对于如何选择非关系型数据库,是一个不小的挑战。这不仅考验架构师在技术上的广度和深度,同时也考究对业务细节了解和熟悉程度。只有将业务场景、业务特点、数据特征跟具体的技术特性相结合,才能开发出满足业务需要应用程序,最终实现快速落地的目的。

对于NO-SQL数据库而言,目前比较流行、常用的有Redis、Mongodb、ES、Hbase。 今天来对Redis、Mongodb之间做一个简单的对比,主要包含它们之间的特性,已经应用场景,特此记录。

Redis

Redis是一个内存数据结构存储,提供了丰富的功能。通常应用于数据缓存、消息代理、队列、排名、秒杀等业务场景。

特性

  • 专门的命令行交互界面 – redis-cli
  • 键值对的数据存取方式,支持丰富的数据结构 如 list, set, hash, stream, bitmap 等
  • 最大支持512M的数据存储
  • 支持发布/订阅消息队列
  • 支持管理实时地理空间数据的特殊命令提供地理空间支持 - Geospatial data type
  • 支持LUA脚本
  • 提供多语言客户端连接工具 如Java、golang、Python
  • 支持物联网和嵌入式设备
  • 支持Spring Data
  • 支持Spring Cache 例如Java 客户端Redisson

安装

针对不同的系统Redis提供不同的安装方式。该文章只介绍采用源码的安装方式,在Mac OS10.13.6、Centos7.8两个系统都成功安装

  • 下载源码包

    wget https://download.redis.io/redis-stable.tar.gz
    
  • 解压源代码包

    tar -xzvf redis-stable.tar.gz
    cd redis-stable
    make
    

    如果安装成功后,会在src目录下生成可执行文件

    • redis-server - redis-server 可执行文件
    • redis-cli - redis客户端命令工具
  • 如需要将相关工具安装在**/usr/local/bin**,请执行

    make install
    
  • 启动 - 当执行完 make install 命令后,可以在命令行终端的任意目录使用以下命令启动Redis服务

    redis-server
    

    在这里插入图片描述

    如上图,Redis已经成功启动,从启动日志可以看出Redis的版本信息。

MongoDB

MongoDB是一个NoSQL文档数据库,它以类似JSON的文档结构 (BSON)存储信息。它作为一个无模式数据存储非常有用,可用于设计和实现阶段快速变化的应用程序、原型。

特性

  • 供交互式命令行界面MongoDB Shell(mongosh)执行管理操作和查询/更新数据
  • 支持基于JSON结构的JOIN查询方式
  • 支持不同数据类型的数据检索,如基于地理的搜索、图形搜索和文本搜索
  • 支持多文档ACID事务
  • 支持Spring Data
  • 不同的版本供开发者选择 如社区、企业和云(MongoDB Atlas)版本
  • 多语言驱动程序 如C++, Java, Go, Python, Rust, and Scala
  • 提供MongoDB Compass GUI工具浏览和操作数据
  • 使用MongoDB图表提供数据的可视化表示
  • MongoDB BI连接器提供与BI和分析平台的连接

安装

请查看

Redis 应用场景

缓存

  • 毫秒级响应 - Redis对频繁的客户端情况请求,提供毫秒级时间响应 性能极佳
  • 数据过期 - 使用EXPIRE、EXPIREAT和PEXPIRE等命令设置密钥的过期时间
  • 数据持久化 - 使用PERSIST命令并持久化键值对,使其成为缓存的理想选择

灵活数据存储

Redis提供各种数据结构,如字符串、列表、集合和哈希,以决定如何存储和组织数据。因此,Redis为我们提供了实现数据库结构的完全自由

复杂数据存储

同样地,通过列表、集合和散列的组合,开发者可以为存储实现复杂的数据结构,如队列、数组、排序集和图

Chat, Queue, Message Broker

Redis支持使用模式匹配的方式对数据进行发布、订阅处理。因此,Redis可以支持实时聊天和社交媒体订阅应用程序。类似地,我们可以使用列表数据结构实现轻量级队列。此外,Redis的列表支持原子操作并提供阻塞功能,因此适合实现消息代理。

注意:Redis 5.0之前的版本 发布订阅功能并不完美,对于数据在处理过程中不支持数据持久化、集群消费、广播消费等功能。Redis 5.0之后引入了Redis Streams功能,对一些方面进行了改进,但仍然跟RocketMQ、Kafka有很大的区别

会话存储

Redis提供了一个具有持久性功能的内存数据存储,使其成为存储和管理web/移动应用程序会话的理想选择。使用Redis集中式的对session会话进行存储,解决了分布式应用系统中的会话管理问题

IOT & 嵌入式系统

根据Redis的官方文档,从4和5开始的更新版本支持ARM处理器和树莓派。此外,它在Andriod上运行,并且正在努力将Android作为官方支持的平台。因此,Redis看起来非常适合物联网和嵌入式系统,得益于其小内存占用和低CPU需求。

实时处理

作为一种存储速度极快的数据结构,我们可以将其用于实时处理应用程序。例如,Redis可以有效地服务于提供股价警报、排行榜和实时分析等功能的应用程序。

地理位置服务

Redis提供了专门构建在内存中的数据结构Geo Set(基于排序集),用于管理地理空间索引。此外,它还提供特定的地理命令,如GEOADD、GEOPOS和GEORADIUS,以添加、读取和分析地理空间数据。因此,开发者可以使用Redis构建具有基于位置的功能的实时地理空间应用程序,如微信附近的人。

MongoDB 应用场景

动态查询

MongoDB提供强大的查询功能,支持灵活、复杂的查询场景,如基于地理的搜索、图形搜索和文本搜索,以实现高效的数据检索。同时,在JSON结构化查询的支持下,MongoDB似乎是数据搜索和分析是日常活动的场景的更好选择。

快速架构调整

项目开发初期,由于业务模式不清晰、业务试错等场景。 MongoDB在设计和早期实现阶段非常有用,因为无规则的数据结构,允许开发人员进行快速的产品迭代。它不会对系统底层数据进行固化,支持在产品迭代过程中进行自我优化。

原型制作

通过遵循类似JSON的文档结构,MongoDB允许快速原型、与前端通道的快速集成。同时,它对于不想处理RDBMS复杂性的初级团队也很有用。

动态目录

通过提供一个自我描述的动态模式,MongoDB可以更容易地为电子商务、资产管理和库存等目录添加产品、功能和建议。我们还可以通过索引JSON结构化文档的一个字段或一组字段,在MongoDB中使用表达式查询来实现高级搜索和分析等功能。

移动应用

MongoDB的JSON文档结构允许存储来自各种设备的不同类型的数据以及地理空间索引。此外,数据的水平可扩展性允许移动应用程序的轻松扩展。因此,MongoDB可以为千万级别的用户提供服务,处理数PB的数据,每秒支持数十万次操作,是支持移动应用程序的理想选择。

富应用程序

在RDBMS中为现代内容丰富的应用程序合并各种内容并不容易。另一方面,MongoDB允许存储和提供文本、音频和视频等丰富内容。此外,我们可以使用MongoDB GridFS轻松高效地存储大于16MB的文件。它允许访问大文件的一部分,而无需将整个文件加载到内存中。此外,它还自动在所有服务器上同步我们的文件和元数据。因此,MongoDB看起来更适合支持内容丰富的应用程序。

游戏

与移动和内容丰富的应用程序类似,游戏也需要大规模扩展和动态数据结构。因此,MongoDB可能是游戏应用的一个有前途的选择。

云数据服务

MongoDB Atlas可用于AWS、Google cloud和Azure等多种云服务。此外,通过内置的复制和故障切换机制,它提供了一个高度可用的分布式系统。因此,开发者可以快速部署和管理数据库,并将其用作全球云数据库服务。

总结

综上所述,MongoDB由于其无结构化的文档存储模式,能够适应各种复杂的业务场景,同时Mongodb支持各种灵活、复杂的数据查询和数据统计。Redis由于其内存存储的特性,性能高、系统吞吐量大,响应时间快,偏向于处理各种性能要求比较高的业务场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据挖掘与机器学习课程总结

2022.11月 文章目录一、引言1.1 数据中的知识发现包括哪几个步骤?(Knowledge Discovery from Data, KDD)1.2 数据挖掘应用二、学习的可行性2.1 Hoeffding 不等式(Hoeffding’s Inequality)2.2 用 Hoeffding 不等式说明学习的可行性三、数据和…

浅学Linux内核MMU

1 MMU基本知识 1.1 什么是MMU MMU是 MemoryManagementUnit 的缩写即,内存管理单元. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换. 提供硬件机制的内存访问授权.(现代 CPU 的应用中,基本上都选择了使用 MMU&#…

【Paper】2021_具有输入饱和的多智能体系统非负连边比例一致性研究_范志鹏

范志鹏. 具有输入饱和的多智能体系统非负连边比例一致性研究[D].华中科技大学,2021.DOI:10.27157/d.cnki.ghzku.2021.001324. 文章目录3 基于状态反馈的线性离散正系统连边比例一致性控制3.1 引言3.2 基于状态反馈的离散时间连边比例一致性的问题描述3.3 无向网络离散时间连边比…

JavaScript中的localStorage

JavaScript中的localStorage 参考这篇文章一起学习:JavaScript中的session 案例池子: JS实现鼠标悬停变色 JavaScript中的排他算法实现按钮单选 JavaScript中的localStorage JavaScript中的sessionStorage JavaScript实现网页关灯效果 JavaScript实…

Codeforces Round #836 (Div. 2) D. Range = √Sum

翻译: 给你一个整数𝑛。找到一个由𝑛不同整数组成的序列𝑎1,𝑎2,…,𝑎𝑛,使得对于所有𝑖和 马克斯(𝑎1𝑎2,……

Qt-数据库开发-QTableView操作数据库(1)

Qt-数据库开发-QTableView操作数据库 文章目录Qt-数据库开发-QTableView操作数据库1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容👉个人内容分类汇总 👈👉数据库开发 👈 1、概述 这是通过学习Qt官方Demo产生的一个示例…

【爬虫5年保更新专栏】异步协程典型案例,一篇掌握~

最近收到 C 友反馈,说 《听说过 python 协程没?听说过 asyncio 库没?都在这一篇博客了》 这篇博客的目标图片站,已经不能使用了,橡皮擦查阅之后,发现是对方网站已经不运营了,所以更新一下案例。…

SessionJSPCookie

今日内容 会话技术。会话技术包括两个: CookieSession JSP的入门学习:JSP也是一种服务器的动态资源,servlet也是一种服务器的动态资源。 会话技术 会话:一次会话中包含多次请求和响应。一次会话就像是人与人的一次见面聊天&…

Maya多边形物体批量材质传递工具v1.0发布及教程

一、插件介绍: 在大量场景制作时,当前期模型和材质没有同时完成,而用白模进行场景搭建后,能否后期,快速根据相同模型结构,快速识别物体并批量赋材质吗?答案是现在可以了。下面介绍的就是解决此…

使用SBT构建和发布基于SpringBoot的Scala应用

SBT 是 Scala 生态圈里的经典构建工具,虽然很多人觉得 SBT 很复杂,还戏称其为 SB Tool,但其全称确是 Simple Build Tool。 实际上,很多产品(包括像 SBT 这样的工具和技术产品)只有一个打动用户的特性就够了…

面经攻略:详谈Redis常见数据类型

👉本篇速览 早在最开始学Redis的时候,我们就学到了这九种数据类型:String、Hash、List、Set、Zset、BitMap、HyperLogLog、GEO、Stream,但其实在学的时候并不了解它的底层是怎么存储这些数据,而不同的数据类型又有哪些…

深兰科技|党政干部科技学习权威读本《元宇宙与社会治理新范式》

近日,由中共中央党校出版社出版,深兰科技创始人、深兰科技科学院创始院长陈海波撰写的《元宇宙与社会治理新范式》一书正式发售。 该书与陈海波主编的《与领导干部谈AI——人工智能推动第四次工业革命》、《与领导干部谈量子科技》一同入选了中共中央党校…

Web3中文|微软:黑客通过Telegram侵害加密公司

微软最近调查了一次攻击,在该攻击中,被追踪为 DEV-0139 的威胁参与者通过加入加密货币交易平台的Telegram群来寻找目标用户。 10月19日,威胁参与者冒充加密资产管理公司的代表邀请目标用户到另一个Telegram群,在那里威胁参与者要…

osgEarth示例分析——osgearth_eci

前言 osgearth_eci示例,展示了J2000的天体坐标系和ECEF地固系的转换,绘制坐标系,以及读取卫星参数绘制卫星的功能。绘制卫星轨迹,添加差值效果和未添加差值的效果。 关于卫星两行根数的数据文件下载路径:CelesTrak: …

0基础怎么转行软件测试?

前言 0基础转行软件测试难吗?怎么学才能找到工作?这应该是所有新人都会面临的问题,所以我结合自己的经历,做了一些总结和学习方法,希望能对大家有所帮助。 我按照薪资的不同大致划分成3个档位: 月薪5-9k&…

高压直流输电(HVDC)的最优潮流(OPF)(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

ZIP压缩包的自动设置密码可以这样解除

WinRAR设置了自动添加密码,每次压缩完ZIP文件后,都会自带打开密码,打开压缩包里的文件都需要输入密码。如果后续不需要每个ZIP文件都带有密码,要如何去除这个设置呢? 首先,打开WinRAR压缩软件,点…

晶品特装在科创板上市:总市值约为48亿元,前三季度收入下滑12%

12月8日,北京晶品特装科技股份有限公司(下称“晶品特装”,SH:688084)在上海证券交易所科创板上市。本次上市,晶品特装的发行价格为60.98元/股,发行数量为1900万股,募资总额约为11.59亿元&#x…

IncepFormer:用于语义分割的高效inception transformer

前言 语义分割通常得益于全局上下文、精细定位信息、多尺度特征等。为了在这些方面改进基于Transformer的分割器,本文提出了一种简单而强大的语义分割架构——IncepFormer。IncepFormer介绍了一种新颖的金字塔结构Transformer编码器,它同时获取全局上下文…

中药中天然类固醇—艾美捷胆固醇肉豆蔻酸酯

艾美捷胆固醇肉豆蔻酸酯相关参数说明: CAS Registry No.: 1989-52-2 Formal Name: (3β)-cholest-5-en-3-ol 3-tetradecanoate Synonyms: Cholesterol Myristate, Cholesteryl Tetradecanoate, Myristic Acid cholesteryl ester, NSC 226867 MF: C41H72O2 FW: …