Redis 本质上是一个高性能内存数据库(key-value) ,特点是:快(微秒级)、支持多种数据结构、支持持久化和分布式。所以它常用于一些"对性能要求高、读写频繁"的场景。
一、缓存(最核心场景)
👉 90% 的 Redis 使用都是做缓存
用法:
- 查询数据库 → 放入 Redis
- 下次直接从 Redis 读
典型场景:
- 商品详情页
- 用户信息
- 配置数据
解决的问题:
- 减轻数据库压力
- 提高响应速度(毫秒 → 微秒)
二、分布式锁
👉 多服务/多线程抢资源时用
用法:
- 利用
SETNX或SET key value NX EX
场景:
- 秒杀系统(防止超卖)
- 定时任务只执行一次
- 防止重复提交
三、计数器(高并发统计)
👉 Redis 原子操作非常适合计数
用法:
INCR/DECR
场景:
- 点赞数
- 浏览量(PV)
- 接口访问次数(限流基础)
四、排行榜 / 排序
👉 使用 有序集合(ZSet)
场景:
- 游戏积分排行榜
- 热门文章排序
- 热搜榜
特点:
- 自动排序
- 支持按分数范围查询
五、消息队列(轻量 MQ)
👉 Redis 也能做简单队列
用法:
- List:
LPUSH + RPOP - Stream(更专业)
场景:
- 异步处理(下单后发短信)
- 削峰填谷(高并发缓冲)
但复杂场景一般用 Kafka / RabbitMQ
六、Session 共享(登录状态)
👉 分布式系统必用
场景:
- 多台服务器共享登录状态
原理:
- 用户登录信息存 Redis
- 所有服务都能访问
七、限流(防刷接口)
👉 常用在网关/接口层
实现方式:
- 计数 + 过期时间
- 滑动窗口(ZSet)
场景:
- 登录接口限制
- 短信验证码发送限制
- API 防攻击
八、地理位置(LBS)
👉 Redis 自带 GEO
场景:
- 附近的人
- 附近的店铺
- 外卖/打车
九、缓存热点数据(热点Key)
👉 高并发系统常见问题
场景:
- 热门商品
- 秒杀商品
- 首页推荐
十、布隆过滤器(防缓存穿透)
👉 避免无效查询打到数据库
场景:
- 查询不存在的数据(恶意攻击)
- 大规模ID校验
总结一句话(面试用🔥)
👉
Redis 主要用于:缓存、分布式锁、计数器、排行榜、消息队列、Session共享、限流、地理位置等高并发、高性能场景。
再给你一个"程序员思维版总结"
如果你写系统,可以这么理解:
- 读多写少 → 用 Redis 做缓存
- 抢资源 → 用 Redis 锁
- 统计数据 → 用 Redis 计数
- 需要排序 → 用 ZSet
- 异步削峰 → 用 Redis 队列
- 分布式登录 → 用 Redis 存 Session