Redis vs MongoDB:内存字典与文档库对决

Redis


目录

[1. 本质](#1. 本质)

[2. 最常干的事](#2. 最常干的事)

[3. 数据类型(5+1)](#3. 数据类型(5+1))

[4. 一秒上手](#4. 一秒上手)

[5. 为什么用 Redis 而不用 map](#5. 为什么用 Redis 而不用 map)

[6. 集群与高可用](#6. 集群与高可用)

一句话速记


把数据放在内存里的超高速"字典"服务器,支持持久化、发布订阅、分布式锁,常当缓存、计数器、消息队列用。

1. 本质

  • 内存数据库(键值对),读写亚毫秒级。

  • 单线程网络模型,没有并发锁竞争,快且简单。

  • 支持 持久化(RDB/AOF),断电不丢数据。


2. 最常干的事

场景 Redis 命令示例 说明
缓存 SET user:123 '{"name":"sunan"}' EX 600 10 分钟过期
计数器 INCR page:view:home 原子 +1
分布式锁 SET lock:pay EX 30 NX 30 秒自动释放
消息队列 LPUSH task:q 1 2 3 / BRPOP task:q 0 列表阻塞弹出
排行榜 ZADD rank 100 sunan 90 tom 有序集合

3. 数据类型(5+1)

  1. String 字符串

  2. List 双端队列

  3. Set 唯一集合

  4. Sorted Set 带分数排行榜

  5. Hash 对象表

  6. Bitmap/HyperLogLog/Stream 扩展类型


4. 一秒上手

bash 复制代码
docker run -d -p 6379:6379 redis:7-alpine
redis-cli
> SET site redis
> GET site
"redis"

5. 为什么用 Redis 而不用 map

map (内存) Redis
进程内 进程外/网络
重启即失 可持久化
单机 分布式集群
无锁 内置锁/原子指令

6. 集群与高可用

  • 主从复制:一主多从,读写分离。

  • Sentinel:自动故障转移。

  • Redis Cluster:数据分片,横向扩展。


一句话速记

Redis = 远程内存字典 + 持久化 + 发布订阅 + 分布式锁,命令简单,性能爆炸,是后端缓存与实时计数的首选。

二、mongoDB

用"类 JSON"文档存数据的超灵活数据库,不需要提前设计表结构,适合需求变化快、字段不定、要横向扩展的现代应用。


1. 本质

  • 文档型数据库(BSON,二进制 JSON)

  • 无模式(Schema-less):同一集合里字段可以不同

  • 支持索引、事务、聚合、分布式集群


2. 跟 MySQL 的直观对比

MySQL MongoDB
表 table 集合 collection
行 row 文档 document
列 column 字段 field
先建表结构 随时加字段
SQL JSON 风格的查询

3. 一秒上手

bash 复制代码
docker run -d -p 27017:27017 mongo:7-jammy
mongosh
> use shop
> db.products.insertOne({name:"iPhone", price:5999, spec:{ram:"8G"}})
> db.products.find({price:{$gte:5000}})

4. 最常干的事

场景 示例
用户资料 字段随时扩展(头像、第三方账号、会员等级)
日志/事件 不同日志字段不一样,直接塞
内容管理 文章、评论、标签嵌套在一个文档
实时分析 聚合框架一条语句分组、过滤、统计

5. 优势

  • 敏捷 :需求变→直接改字段,无需 ALTER TABLE

  • 嵌套:一条文档里嵌套数组、子文档,一次取出

  • 水平扩展:内置分片,海量数据加机器即可

  • 生态:Change Stream、GridFS 存大文件、Atlas 云服务


6. 什么时候不用

  • 强事务、多表关联复杂(MySQL 更成熟)

  • 固定字段、字段极少变化(MySQL 更省空间)

  • 高度一致性银行核心帐(MySQL + 事务)


一句话速记

MongoDB = 文档版数据库,像 JSON 一样存数据,随加字段、易扩展,适合产品迭代快、字段不定、海量文档的现代应用。

相关推荐
一碗白开水一4 分钟前
Day 5 · 弹性 | 微观
java·前端·数据库
迪飞特科技4 分钟前
大模型接入业务系统:API、本地部署、RAG、智能体四种路线怎么选
java·数据库·人工智能·知识图谱·deepseek·本地化大模型
星轨zb7 分钟前
[专题5]支付发放物品的一致性保障:事务、幂等与状态流转
数据库·后端·mongodb·支付架构学习
保密资质顾问说14 分钟前
保密培训三大误区纠正:从形式主义到持续合规
数据库
泡海椒17 分钟前
JQuick-SQL GROUP BY 聚合:COUNT、SUM、AVG、MIN 与 MAX
数据库·sql
小冯不疯23 分钟前
销售订单同步实战:从聚水潭到金蝶云星空的线上出库单落地
大数据·数据库
qq_4017004134 分钟前
Qt 实时大数据量存储:自己动手实现 TDMS 读写
数据库·qt
Leon-Ning Liu1 小时前
Oracle参数对比脚本分享:对比 SPFILE 参数与内存参数差异,支持 11g 到 19c
数据库·oracle
涛思数据(TDengine)1 小时前
TDengine TSDB 3.4.3.3 上线:流计算分层闭环、虚拟表跨层引用,查询关联一次写完
数据库·人工智能·数据分析·时序数据库·tdengine·工业
远方16091 小时前
118-五大进程LGWR DBWn CKPT SMON PMON 与存储故障-文件系统对照
大数据·数据库·sql·oracle·database