本指南分为五个部分:
入门概念 → 核心数据结构 → 实战命令与场景 → 性能优化与集群 → 高级进阶与面试
一、Redis 基础入门
1. 什么是 Redis?
Redis(Remote Dictionary Server)是一个 基于内存的高性能键值数据库,可用作:
- 缓存系统(高频数据加速访问)
- 消息队列
- 分布式锁
- 实时统计系统
📦 特点:
- 读写性能极高(QPS 10w+)
- 支持五大核心数据结构
- 持久化支持(RDB / AOF)
- 提供主从复制 + 哨兵 + 集群
二、五大核心数据结构
| 类型 | 结构示意 | 常用命令 | 应用场景 | 
|---|---|---|---|
| String | key → value | SET / GET / INCR / DECR | 缓存、计数器、Token存储 | 
| Hash | key → {field:value} | HSET / HGET / HGETALL | 用户信息、对象缓存 | 
| List | key → [v1, v2, ...] | LPUSH / RPUSH / LPOP / LRANGE | 消息队列、任务列表 | 
| Set | key → {v1, v2, ...} | SADD / SREM / SMEMBERS | 标签、去重、好友关系 | 
| ZSet(有序集合) | key → {(score, member)} | ZADD / ZRANGE / ZSCORE | 排行榜、延时队列 | 
三、Redis 实战命令速查表
常用操作
SET name "avan"
GET name
DEL name
EXISTS name
EXPIRE name 60  # 设置60秒过期
TTL name        # 查看剩余时间
Hash 操作
HSET user:1 name "jack" age 18
HGET user:1 name
HGETALL user:1
HINCRBY user:1 age 1
List 操作(队列)
LPUSH queue msg1
RPUSH queue msg2
LPOP queue
LRANGE queue 0 -1
Set 操作
SADD tags redis mysql java
SMEMBERS tags
SINTER tags1 tags2  # 交集
ZSet 操作
ZADD rank 100 user1 200 user2
ZRANGE rank 0 -1 WITHSCORES
ZINCRBY rank 10 user1
四、Redis 应用场景实战
| 场景 | 方案 | 命令 | 
|---|---|---|
| 缓存加速 | 业务数据存Redis,先查Redis再查数据库 | SETEX key ttl value | 
| 计数器 | 浏览量、点赞数 | INCR key | 
| 分布式锁 | 防止重复下单、库存超卖 | SET lock:order 1 NX EX 5 | 
| 排行榜 | 按积分排名 | ZADD rank score user | 
| 消息队列 | 异步任务 | LPUSH / BRPOP | 
| 延时任务 | 借助ZSet score为时间戳 | ZADD delay_jobs timestamp job | 
🔧 五、持久化与性能优化
RDB(快照)
- 定期保存内存数据到磁盘(.rdb 文件)
- 配置项:save 900 1(15分钟有1次写入则保存)
AOF(日志追加)
- 记录所有写命令,可恢复到最新状态
- 配置:appendonly yes
- 优势:更安全,实时性高;缺点:文件大
性能优化建议
| 类别 | 建议 | 
|---|---|
| 内存 | 使用 maxmemory控制总量,设淘汰策略volatile-lru | 
| CPU | 开启 io-threads(Redis 6+ 支持多线程) | 
| Key | 避免大 Key(>1MB),拆分存储 | 
| TTL | 给缓存设置过期时间防止爆内存 | 
| Pipeline | 批量执行命令减少RTT延迟 | 
六、Redis 分布式与高可用
| 模式 | 说明 | 特点 | 
|---|---|---|
| 主从复制 | 主节点写,从节点读 | 读写分离、冗余备份 | 
| 哨兵模式(Sentinel) | 自动主从切换 | 高可用 | 
| 集群模式(Cluster) | 数据分片存多节点 | 水平扩展性能 | 
示意:
[Client] → [Redis Cluster] → Node A,B,C (分槽存储)
七、快速学习路径(建议3天掌握)
| 时间 | 学习目标 | 内容 | 
|---|---|---|
| Day 1 | 基础入门 | 安装 + 五大数据类型 + 基本命令 | 
| Day 2 | 实战应用 | 缓存、排行榜、分布式锁 | 
| Day 3 | 进阶优化 | 持久化、Pipeline、主从与集群 | 
八、Redis 面试常考题(简答背诵)
- Redis 为什么快? 内存存储 + 单线程 + 非阻塞IO + 高效数据结构
- Redis 与 Memcached 区别? Redis支持多数据类型 + 持久化 + 集群 + Lua脚本
- 如何防止缓存击穿? 使用互斥锁或热点 Key 永不过期策略
- 缓存雪崩如何解决? 设置不同 TTL、增加限流和多层缓存
- 大 Key 如何处理? 拆分结构 + 异步删除(UNLINK)

 
                         
                         
                     
                         
                     
                     
                     
                     
                     
                             
                                    
 
                     
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                     
                 
                         
                     
                 
         
         
             
         
         
         
		