Redis 核心概念
Redis 是一个基于内存的 Key-Value 数据结构存储系统,支持持久化、主从复制和集群。
核心特征
- 内存存储(极快)
- 单线程模型(命令执行)
- 多数据结构
- 可持久化
- 支持分布式
Redis 用单线程处理命令,避免锁,提高可预测性能。
原理
- 单线程执行命令
- I/O 多路复用(epoll / kqueue)
- Redis 6+ 引入 I/O 多线程
📌 优点:
- 无锁
- 高性能
- 逻辑简单
📌 缺点:
- 单个实例有 CPU 上限
- 所有数据在内存
- 顺序执行
- 极少系统调用
- 简单数据结构
Redis 的 value 是 “对象”,不是简单字符串。
| 类型 | 说明 | 使用场景 |
|---|---|---|
| String | 字符串 / 数值 | 缓存、计数器 |
| Hash | 字段-值 | 对象存储 |
| List | 双端链表 | 消息队列 |
| Set | 无序集合 | 去重 |
| ZSet | 有序集合 | 排行榜 |
| Redis 类型 | 底层实现 |
|---|---|
| String | SDS |
| Hash | ziplist / hashtable |
| List | quicklist |
| Set | intset / hashtable |
| ZSet | skiplist + dict |
规范
业务:模块:对象:{id}
示例:
user:profile:{1001}
order:info:{2001}
Cluster 专用
- {} Hash Tag 保证同槽
- 定期删除
- 惰性删除(主)
- 定期 + 惰性(实际)
maxmemory-policy allkeys-lru
常见策略:
- allkeys-lru
- volatile-lru
- noeviction
- 内存快照
- fork 子进程
- 恢复快
- 记录写命令
- 数据完整
- 文件大
- RDB + AOF(生产推荐)
- 异步复制
- 全量 + 增量
- 监控
- 自动故障转移
- 选主
- 16384 slots
- 无中心
- 自动分片
- MULTI / EXEC
- 不支持回滚
- 保证顺序
- 原子执行
- 不能阻塞
- Cluster 有限制
- 缓存
- 分布式锁
- 计数器
- 延迟队列
- 排行榜
- 会话存储
| 限制 | 说明 |
|---|---|
| 单线程 | CPU 有上限 |
| 内存 | 不是无限 |
| Cluster | 只有 DB 0 |
| 强一致性 | 不保证 |
Redis 是一个基于内存的高性能 Key-Value 存储系统,采用单线程模型和 I/O 多路复用,支持多种数据结构、持久化、高可用和分布式集群,常用于缓存和高并发场景。