Redis(Remote Dictionary Server)是一款开源的、基于内存的高性能键值对(Key-Value)NoSQL数据库。
简单来说,它把数据直接放在内存中进行读写,而不是像传统数据库那样存在硬盘上。这使得它的读写速度极快(亚毫秒级响应),单机每秒可处理上万次甚至十万次以上的请求。
Redis 在现代互联网架构中扮演着极其重要的角色,它的核心用途可以归纳为以下几个主要场景:
1. 缓存加速(最核心的用途)
这是 Redis 最经典的应用。对于频繁访问但变动不大的数据(如电商商品详情、首页 Banner、文章列表等),将其存入 Redis 缓存。当用户请求时,直接从内存读取,从而大幅降低后端关系型数据库(如 MySQL)的查询压力和响应延迟。
2. 分布式锁
在分布式微服务架构中,多个服务实例可能会同时操作共享资源。Redis 利用其原子操作特性(如 SET NX EX 命令),可以实现跨进程的互斥锁,常用于秒杀抢购防超卖、防止表单重复提交、分布式任务调度等场景,保障数据的一致性。
3. 排行榜与实时统计
Redis 提供了丰富的数据结构,特别是有序集合(ZSet),非常适合处理需要排序的数据。例如游戏中的玩家积分排行榜、直播间的礼物榜单、微博热搜等,都可以利用 ZSet 轻松实现实时更新与查询。此外,利用其原子自增操作,还能轻松实现文章阅读量、点赞数等计数器功能。
4. 会话管理(Session 共享)
在分布式系统中,用户登录后的状态(Session 或 Token)如果存在本地,会导致不同服务器之间状态不互通。将登录态统一存储在 Redis 中,可以实现多服务间的会话共享,且由于 Redis 支持持久化,即使服务重启,用户的登录状态也不会丢失。
5. 消息队列与发布/订阅
Redis 支持发布/订阅(Pub/Sub)模式,并且可以利用列表(List)或有序集合(ZSet)实现轻量级的消息队列或延迟队列。这常用于直播间的弹幕消息流、异步任务处理、订单超时取消等场景。
6. 限流与防刷
利用 Redis 的高性能和原子操作,可以非常方便地实现接口访问频率限制(Rate Limiting),防止恶意爬虫或黑客的暴力攻击。
总结来说:
如果说传统数据库(如 MySQL)是企业的"核心数据仓库",那么 Redis 就是挡在仓库前面的"高速前台"。它通过极致的读写性能,承担了绝大部分高频、高并发的访问压力,是现代互联网应用(尤其是高并发场景)必不可少的基础设施。