一、Redis 到底是個啥?(白話版)
簡單説,Redis 就是一款超高速的內存數據庫,你可以把它理解成 “電腦內存裏的萬能儲物箱”—— 數據都存在內存裏(不是硬盤),所以讀寫速度快到離譜(百萬級 / 秒);同時它還能把數據持久化到硬盤,不怕斷電丟數據。和 MySQL 這種傳統數據庫比,Redis 更像 “貼身小倉庫”,專門存高頻用、要快速取的數據,而 MySQL 是 “大庫房”,存海量、不追求極致速度的數據。
二、Redis 能幹嘛?(實際應用場景)
日常開發中,Redis 幾乎是後端必備,核心用在這 6 個場景:
- 緩存:把數據庫裏的熱點數據(比如商品詳情、用户信息)存到 Redis,用户請求時直接從 Redis 取,不用每次查數據庫,網站速度能提幾十倍;
- 分佈式鎖:多台服務器搶同一個資源(比如秒殺下單),用 Redis 做 “鎖”,避免重複操作;
- 計數器 / 限流器:文章閲讀量、接口請求次數、秒殺庫存計數,Redis 能原子性加減,不計數出錯;
- 消息隊列:簡單的消息收發(比如訂單通知、延時提醒),比專門的 MQ(如 RabbitMQ)輕量;
- 會話存儲:用户登錄後的 token、購物車數據,存在 Redis 裏,分佈式系統下多台服務器能共享;
- 延時任務:比如訂單 15 分鐘未支付自動取消,用 Redis 的過期鍵功能就能實現。
三、Redis 的核心特點(為啥這麼好用)
- 速度快:數據存在內存,單線程模型避免線程切換開銷,官方測試讀速 11 萬 / 秒、寫速 8.1 萬 / 秒;
- 數據類型豐富:不只是存字符串,還支持哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet),能滿足不同場景需求;
- 比如存用户信息用 Hash(key = 用户 ID,value={name:xx, age:xx}),存排行榜用 ZSet;
- 支持持久化:有兩種方式把內存數據存到硬盤:
- RDB:定時快照(比如每小時存一次),適合備份;
- AOF:記錄所有寫操作,重啓時重放操作恢復數據,更安全;
- 支持集羣 / 主從:能搭多台 Redis 服務器,實現高可用(一台掛了另一台頂上)、擴容(存更多數據)。
四、新手入門:Redis 最基礎的使用(命令 + 代碼示例)
1. 核心命令(終端直接用)
bash
運行
# 1. 存字符串(key=name,value=zhangsan)
SET name zhangsan
# 2. 取字符串
GET name # 輸出:zhangsan
# 3. 存哈希(用户信息)
HSET user:1 name lisi age 20
# 4. 取哈希的某個字段
HGET user:1 age # 輸出:20
# 5. 給計數器加1
INCR view:article:1001 # 文章1001的閲讀量+1
# 6. 設置過期時間(10秒後失效)
SET code 123456 EX 10
2. Python 代碼操作 Redis(需先裝 redis 庫)
python
運行
import redis
# 連接Redis(默認本地、端口6379)
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
# 存/取字符串
r.set('name', 'zhangsan')
print(r.get('name')) # 輸出:zhangsan
# 存/取哈希
r.hset('user:1', mapping={'name': 'lisi', 'age': 20})
print(r.hget('user:1', 'age')) # 輸出:20
# 計數器+1
r.incr('view:article:1001')
print(r.get('view:article:1001')) # 輸出:1
五、新手避坑點
- 別存太多數據:Redis 是內存數據庫,內存滿了會變慢,只存熱點數據;
- 注意過期時間:緩存數據要設過期時間,避免數據和數據庫不一致;
- 避免大 key:別存超大的字符串 / 列表(比如幾 MB 的內容),會拖慢 Redis。
總結
- Redis 是內存優先的數據庫,核心優勢是快,主打緩存、計數、分佈式鎖等場景;
- 支持字符串、Hash、List 等豐富數據類型,能適配多種業務需求;
- 新手使用重點關注 “數據持久化” 和 “過期時間”,避免數據丟失或不一致。
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。