什么是Redis?
Redis(Remote Dictionary Server)是一个开源的 内存数据库,同时支持持久化,以 键值存储(Key-Value Store) 为核心,并提供多种数据结构(如字符串、哈希、列表、集合等)。它以 高性能、低延迟 著称,广泛应用于缓存、实时计算和分布式协调等场景。
Redis 是什么?
内存数据库:数据主要存储在内存中,读写速度极快(微秒级)。
键值存储:通过
Key
快速访问Value
,支持多种数据类型。持久化支持:可配置将数据保存到磁盘(RDB快照/AOF日志),避免重启后数据丢失。
分布式能力:支持主从复制、集群分片,适合高可用架构。
Redis 通常用于什么?
缓存加速
存储热点数据(如商品信息、用户会话),减轻数据库压力。
举例:电商网站用 Redis 缓存商品详情,QPS 从 1k 提升到 10w+。
实时排行榜
使用 有序集合(ZSet) 实现动态排序(如游戏积分榜、热搜)。
举例:微博热搜榜实时更新,延迟低于 10ms。
分布式锁
通过
SETNX
命令协调多服务并发访问(如秒杀库存扣减)。举例:防止超卖,1000 个请求抢 100 件商品时保证公平性。
消息队列
用
List
或Stream
实现轻量级队列(如异步任务处理)。举例:订单支付成功后,推送消息通知物流系统。
计数器/限流
原子操作(
INCR
)实现阅读量统计、API 限流。举例:限制每个 IP 每分钟只能请求 100 次。
为什么用 Redis?
性能极致
内存访问比磁盘快 100 倍以上,单机 QPS 可达 10w+。
数据结构丰富
不仅支持简单的 Key-Value,还有 Hash、Set、ZSet 等,直接解决业务问题(如排行榜用 ZSet 比 MySQL 快 1000 倍)。
高并发支撑
单线程模型避免锁竞争,适合秒杀、抢购等高并发场景。
扩展性强
通过集群分片轻松横向扩展,支持 TB 级数据。
Redis 解决了哪些问题?
问题 | 传统方案 | Redis 解决方案 | 优势 |
---|---|---|---|
数据库压力大 | 数据库扛不住高并发查询 | 缓存热点数据,减少数据库访问 | 查询速度从 10ms → 0.1ms |
排行榜更新慢 | MySQL ORDER BY 性能差 |
用 ZSet 实时排序 | 排序耗时从 100ms → 1ms |
分布式系统并发冲突 | 数据库行锁,性能低下 | Redis 分布式锁(SETNX) | 锁操作从 20ms → 0.5ms |
消息队列复杂度高 | Kafka/RabbitMQ 部署重 | Redis List/Stream 轻量实现 | 延迟从 50ms → 5ms |
频繁计算的计数器 | MySQL 频繁更新计数字段 | Redis INCR 原子操作 |
吞吐量从 1k/s → 50k/s |
总结
Redis 是一个 高性能内存数据库,核心价值在于:
加速应用(缓存热点数据,提升 10~100 倍性能)。
简化开发(内置丰富数据结构,避免复杂 SQL 或外部组件)。
支撑高并发(单线程无锁设计,轻松应对秒级万级请求)。
典型适用场景:缓存、排行榜、分布式锁、消息队列、计数器。
不适用场景:海量冷数据存储、复杂事务、强一致性需求。