Redis和MongoDB是什么?
Redis:像你家的"小冰箱",专门存高频使用的食物(数据)。它是基于内存的键值数据库,读写速度极快(每秒超10万次操作)。比如你每次打开手机App,用户登录信息可能就存在Redis里,秒级响应。
MongoDB:像"超大号收纳箱",专门存各种不规则的杂物(非结构化数据)。它是文档型数据库,用类似JSON的格式存数据,比如用户信息、订单记录、传感器日志等,适合数据量大且结构多变的场景 。
Redis有什么用?怎么用?
核心用途
缓存加速:把数据库里频繁访问的数据(如商品详情)存到Redis,减少数据库压力
会话存储:用户登录状态存Redis,避免每次请求都查数据库
消息队列:用List结构实现秒杀订单排队,避免系统被挤爆
实时排行榜:用有序集合(Sorted Set)存游戏积分,实时更新排名
简单用法
安装:官网下载Redis,启动服务(redis-server),用redis-cli连上就能操作
存数据:
bash
SET user:1001 "小明" # 存字符串
HSET user:profile 1001 age 25 # 存哈希(用户资料)
LPUSH orders "订单A" # 列表存订单队列
查数据:
bash
GET user:1001 # 取用户信息
ZRANGE leaderboard 0 10 WITHSCORES # 查排行榜前10名
MongoDB有什么用?怎么用?
核心用途
存非结构化数据:比如用户动态(带图片、评论、位置信息)。
海量数据存储:支持分布式扩展,存物联网设备每天产生的TB级日志。
灵活查询:支持复杂条件(如"附近5公里的餐厅")和聚合分析(如每月销售额统计)。
简单用法
安装:官网下载MongoDB,启动服务(mongod),用mongo连上操作。
存数据
javascript
db.users.insert({
name: "小红",
age: 28,
address: { city: "北京", street: "中关村" },
hobbies: ["爬山", "摄影"]
}) // 存用户信息(嵌套文档+数组)
查数据:
javascript
db.users.find({ "address.city": "北京" }) // 查北京的用户
db.orders.aggregate([
{ $group: { _id: "$month", total: { $sum: "$amount" } } } // 按月统计销售额
])
Redis和MongoDB怎么配合用?
典型场景:电商系统
Redis负责"快":
缓存商品详情页。
存用户购物车(Hash结构) 。
秒杀库存计数器(避免超卖)。
MongoDB负责"稳":
存订单详情(含商品、支付、物流信息)。
用户行为日志(用于大数据分析) 。
商品评论(带嵌套回复和点赞数)。
互补逻辑:
高频读写(如访问量、库存)交给Redis;
低频复杂数据(如订单记录、日志)交给MongoDB。