Redis和MongoDB是什么?
Redis:像你家的“小冰箱”,專門存高頻使用的食物(數據)。它是基于內存的鍵值數據庫,讀寫速度極快(每秒超10萬次操作)。比如你每次打開手機App,用戶登錄信息可能就存在Redis里,秒級響應。
MongoDB:像“超大號收納箱”,專門存各種不規則的雜物(非結構化數據)。它是文檔型數據庫,用類似JSON的格式存數據,比如用戶信息、訂單記錄、傳感器日志等,適合數據量大且結構多變的場景 。
Redis有什么用?怎么用?
核心用途
緩存加速:把數據庫里頻繁訪問的數據(如商品詳情)存到Redis,減少數據庫壓力
會話存儲:用戶登錄狀態存Redis,避免每次請求都查數據庫
消息隊列:用List結構實現秒殺訂單排隊,避免系統被擠爆
實時排行榜:用有序集合(Sorted Set)存游戲積分,實時更新排名
簡單用法
安裝:官網下載Redis,啟動服務(redis-server),用redis-cli連上就能操作
存數據:
SET user:1001 "小明" # 存字符串
HSET user:profile 1001 age 25 # 存哈希(用戶資料)
LPUSH orders "訂單A" # 列表存訂單隊列
查數據:
GET user:1001 # 取用戶信息
ZRANGE leaderboard 0 10 WITHSCORES # 查排行榜前10名
MongoDB有什么用?怎么用?
核心用途
存非結構化數據:比如用戶動態(帶圖片、評論、位置信息)。
海量數據存儲:支持分布式擴展,存物聯網設備每天產生的TB級日志。
靈活查詢:支持復雜條件(如“附近5公里的餐廳”)和聚合分析(如每月銷售額統計)。
簡單用法
安裝:官網下載MongoDB,啟動服務(mongod),用mongo連上操作。
存數據
db.users.insert({ name: "小紅", age: 28, address: { city: "北京", street: "中關村" }, hobbies: ["爬山", "攝影"]
}) // 存用戶信息(嵌套文檔+數組)
查數據:
db.users.find({ "address.city": "北京" }) // 查北京的用戶
db.orders.aggregate([ { $group: { _id: "$month", total: { $sum: "$amount" } } } // 按月統計銷售額
])
Redis和MongoDB怎么配合用?
典型場景:電商系統
Redis負責“快”:
緩存商品詳情頁。
存用戶購物車(Hash結構) 。
秒殺庫存計數器(避免超賣)。
MongoDB負責“穩”:
存訂單詳情(含商品、支付、物流信息)。
用戶行為日志(用于大數據分析) 。
商品評論(帶嵌套回復和點贊數)。
互補邏輯:
高頻讀寫(如訪問量、庫存)交給Redis;
低頻復雜數據(如訂單記錄、日志)交給MongoDB。