Redis 简介
Redis(REmote DIctionary Server)是一个开源(BSD 许可)、高性能、基于内存的键值存储系统,常被用作:
- 数据库
- 缓存
- 消息队列
它以极快的读写速度(单机可达 10万+ QPS)和丰富的数据结构闻名于世。
一、核心特点
| 特性 | 说明 |
|---|---|
| 内存存储 | 数据默认存储在内存中,速度极快 |
| 支持持久化 | 支持 RDB 快照 + AOF 日志,防止数据丢失 |
| 丰富数据结构 | 不仅支持字符串,还支持: → Hash、List、Set、Sorted Set → Bitmap、HyperLogLog、Geo、Stream |
| 单线程模型 | 使用 I/O 多路复用(epoll/kqueue),避免线程切换开销 |
| 原子操作 | 所有命令都是原子执行 |
| 支持事务 | MULTI/EXEC 提供简单事务(不完全符合 ACID) |
| 发布/订阅 | 支持 Pub/Sub 消息机制 |
| Lua 脚本 | 可在服务器端执行复杂逻辑 |
| 高可用方案 | 主从复制、Sentinel、Redis Cluster |
二、常见使用场景
| 场景 | 说明 |
|---|---|
| 缓存 | 替代 Memcached,缓存数据库查询结果 |
| 会话存储 | 分布式 Session 管理 |
| 排行榜 | 使用 Sorted Set 实现实时排名 |
| 消息队列 | 使用 List / Stream 实现简单队列 |
| 分布式锁 | SET key value NX PX 30000 实现 |
| 计数器 | 文章阅读量、点赞数(INCR 原子操作) |
| 地理位置 | GEOADD / GEODIST 计算距离 |
| 唯一访客统计 | HyperLogLog 实现 UV 统计 |
三、为什么选择 Redis?
| 对比项 | Redis | MySQL | Memcached |
|---|---|---|---|
| 数据结构 | 丰富(10+种) | 表结构 | 仅字符串 |
| 持久化 | 支持 | 支持 | 不支持 |
| 读写性能 | ★★★★★ | ★★★ | ★★★★ |
| 高可用 | Cluster / Sentinel | 主从 | 无 |
| 内存使用 | 高效 | 低 | 高 |
一句话总结:
Redis = 内存数据库 + 缓存 + 消息中间件 + 丰富数据结构
四、基本架构图
客户端
↓
Redis Server(单线程事件循环)
├─ 内存数据结构(String, Hash, List...)
├─ 持久化(RDB + AOF)
├─ 主从复制(Replication)
└─ 集群(Cluster)
五、版本演进(重点)
| 版本 | 里程碑功能 |
|---|---|
| 2.6 | Lua 脚本 |
| 3.0 | Redis Cluster |
| 5.0 | Stream 数据类型 |
| 6.0 | ACL、IO 线程、RESP3 |
| 7.0 | Redis Functions、Sharded PubSub |
| 7.2+ | 更强向量化搜索(RediSearch 集成) |
六、生态工具
| 工具 | 用途 |
|---|---|
redis-cli | 命令行客户端 |
redis-benchmark | 性能测试 |
redis-sentinel | 高可用哨兵 |
RedisInsight | 图形化管理工具(官方) |
RedisShake | 数据迁移工具 |
七、快速体验(一行命令)
docker run -d --name redis -p 6379:6379 redis:latest
然后连接:
redis-cli
> SET name "Redis"
> GET name
"Redis"
小结:Redis 是什么?
Redis 是一个“瑞士军刀”式的内存数据平台
它不仅快,还能用最少代码实现复杂功能。
下一步推荐学习:
需要我继续讲解 “Redis 为什么这么快?” 或 “数据结构内部实现”?随时告诉我!