Redis核心特性
1.内存模型与性能特征
内存数据库(In-Memory)
- 数据主要存储在内存 → 微秒级访问延迟
- 支持持久化(RDB / AOF)保证数据不丢失
单线程事件驱动(Reactor模型)
- 核心执行单线程(避免锁竞争)
- I/O 多路复用(epoll/kqueue)
高吞吐
- 单机 QPS 可达 10w+(取决于网络与命令复杂度)
2.数据结构
Redis ≠ KV数据库,而是 Data Structure Server
| 类型 | 结构 | 应用场景 |
|---|---|---|
| String | 字符串/二进制 | 缓存、计数器 |
| List | 双向链表 | 队列、消息队列 |
| Hash | 哈希表 | 用户属性 |
| Set | 无序集合 | 去重、标签 |
| ZSet | 有序集合 | 排行榜 |
| Bitmap | 位图 | 活跃统计 |
| HyperLogLog | 基数统计 | UV |
| Stream | 流 | 消息队列(增强版) |
3.高可用与扩展能力
主从复制(Replication)
哨兵(Sentinel)自动故障转移
集群(Cluster)
- 分片(16384 slots)
- 横向扩展
4.持久化机制
RDB(快照)
- 周期性 dump
- 恢复快
AOF(日志)
- 追加写日志
- 数据更安全
5.其他高级特性
- 过期策略(TTL / LRU / LFU)
- Lua脚本(原子执行)
- Pipeline(批量请求)
- GEO空间索引
- ACL权限控制(Redis 6+)
6. 消息订阅与发布(Pub/Sub)
Redis 提供轻量级消息通信机制:
flowchart LR
P[Publisher] -->|PUBLISH channel msg| R[(Redis)]
R -->|推送| S1[Subscriber A]
R -->|推送| S2[Subscriber B]
核心命令
| 命令 | 说明 |
|---|---|
| PUBLISH channel msg | 发布消息 |
| SUBSCRIBE channel | 订阅频道 |
| PSUBSCRIBE pattern | 模式订阅 |
7.与 Stream 的对比
| 维度 | Pub/Sub | Stream |
|---|---|---|
| 持久化 | ❌ | ✅ |
| ACK | ❌ | ✅ |
| 消费组 | ❌ | ✅ |
| 重放 | ❌ | ✅ |
👉 结论:
- Pub/Sub → 实时广播
- Stream → 专业消息队列
8. redis架构理解
graph TD
A[Redis] --> B[数据结构引擎]
A --> C[缓存系统]
A --> D[消息系统]
D --> D1[Pub/Sub 实时广播]
D --> D2[Stream 消息队列]
A --> E[事务机制]
E --> E1[MULTI/EXEC]
E --> E2[WATCH 乐观锁]