Skip to content

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: 数量 }

使用说明

  1. 可直接在 Markdown 编辑器中阅读或导出;

  2. 复制标题层级可导入 XMind、幕布、飞书思维导图等工具;

  3. 与安装、持久化、主从/哨兵/集群等长文配合阅读,以官方文档与当前版本为准。