Redis 知识体系导图
一、Redis 基础认知
是什么:内存型 NoSQL 键值数据库
特点
单线程IO多路复用、非阻塞
高性能、读写毫秒级
内存数据库、数据易丢失
支持多种数据结构
前端常见用法
登录态Session、Token缓存
接口数据缓存、页面静态缓存
限流、防抖、分布式锁
购物车、点赞、浏览记录、排行榜
二、Redis 五大基本数据结构(建议掌握)
String 字符串
应用:用户Token、Session、计数器、点赞数、配置信息
常用命令:
SET/GET/EXPIRE/INCR/DECR;分布式锁用SET key value NX EX seconds(老命令SETNX仍可用,推荐统一写SET … NX)前端常见:分布式自增ID、过期自动删除登录态
Hash 哈希
应用:用户信息、购物车、商品详情字段
优势:单独修改字段,不覆盖整体
List 列表
- 应用:消息队列、时间线、浏览历史、消息推送
Set 集合
- 应用:点赞用户、共同好友、去重
ZSet 有序集合
- 应用:排行榜、热度榜单、热门商品、限流排序
三、Redis 三大特殊数据结构(扩展)
Bitmap 位图
- 应用:用户签到、活跃统计、亿级用户状态标记
HyperLogLog
- 应用:页面UV统计、百万千万级去重统计
Geospatial 地理位置
- 应用:附近的人、附近门店
四、Redis 核心机制原理(前端常遇)
过期策略
惰性删除:访问 key 时才判断是否过期并删除
定期删除:后台定时抽样清理
内存淘汰(需配置
maxmemory;默认策略noeviction:达到上限后对新写入报错,不主动删 key)volatile-lru:在已设过期时间的 key 中用 LRU 淘汰allkeys-lru:从全部 key 中用 LRU 淘汰volatile-ttl:在有过期时间的 key 中优先淘汰 TTL 更短的allkeys-lfu/volatile-lfu(4.0+)等:按访问频率淘汰
持久化机制
RDB:快照、全量备份、恢复快、两次快照间可能丢更多数据
AOF:日志追加、可配置刷盘策略、文件大、恢复需重放命令
混合持久化:4.0+ 在 AOF 重写时前导 RDB;是否默认开启以
redis.conf为准
单线程模型(常见说法)
命令执行在核心路径上仍为单线程依次处理(避免锁竞争)
6.0+ 可启用 I/O 线程协助网络读写,降低网络瓶颈;与「多线程执行命令」不是一回事
纯内存、高效数据结构、
epoll等多路复用配合,使单线程仍能支撑很高吞吐
五、Redis 缓存常见问题&解决方案(实践重点)
缓存穿透
现象:查询不存在数据,直接打DB
解决:缓存空值、布隆过滤器、接口校验参数
缓存击穿
现象:热点key过期,大量并发同时击穿到DB
解决:互斥锁、热点key永不过期、提前刷新
缓存雪崩
现象:大量key同时过期+Redis宕机,DB压垮
解决:过期时间加随机值、集群高可用、多级缓存、熔断降级
缓存一致性
常见工程习惯:先更新 DB,再删缓存(旁路缓存的一种;仍要结合业务防竞态)
不推荐:把「更新缓存」当作与 DB 强一致手段;先删缓存再更新 DB 易出现旧数据读入缓存(需额外补偿)
更稳妥:以业务为准选用 延迟双删、版本号、Binlog 同步 等方案
六、Redis 分布式能力(提要)
分布式锁
推荐:
SET key value NX EX ttl+ Lua 原子释放;生产可借助 Redisson 等成熟实现Redlock 在业界存在争议,部署前请阅读官方与社区讨论,勿盲信「绝对安全」
分布式Session共享
前后端分离登录:JWT+Redis存黑名单/过期刷新
多服务器共享登录态,不再存在本地session
接口限流(网关或服务端)
固定窗口、滑动窗口、令牌桶、漏桶
可用 ZSet 等实现滑动窗口限流(注意精度与清理策略)
七、Redis 前端项目实战场景(实用提要)
用户登录鉴权:Token存入Redis,设置过期时间,退出直接删key
用户签到:Bitmap位图实现月度签到统计
UV/PV统计:HyperLogLog
商品热门排行榜:ZSet按热度排序
接口数据缓存:首页列表、详情页缓存,减轻DB压力
点赞收藏:Set存点赞用户,String存点赞总数
接口防重复提交:
SET key NX EX做短时幂等 token购物车:Hash:
userId -> { 商品id: 数量 }
使用说明
可直接在 Markdown 编辑器中阅读或导出;
复制标题层级可导入 XMind、幕布、飞书思维导图等工具;
与安装、持久化、主从/哨兵/集群等长文配合阅读,以官方文档与当前版本为准。
