redis 简介
Redis 是一款开源、高性能的内存型键值数据库,支持多种数据结构和持久化机制,核心定位是 “高速缓存 + 数据存储”。
核心特点
- 基于内存存储,读写延迟通常很低;QPS 与命令类型、网络、持久化配置强相关,基准测试需自行压测,不宜写死「十万 +」。
- 支持丰富数据结构,而非单一键值对。
- 提供持久化方案,避免内存数据丢失。
- 支持集群、主从复制,保障高可用和扩展性。
- 支持事务、Lua 脚本、发布订阅等高级功能。
核心优势
- 性能极致:内存操作 + IO 多路复用模型,延迟低至微秒级。
- 灵活易用:API 简洁,支持多种客户端(Java、Python、Go 等)。
- 功能全面:兼顾缓存、存储、消息队列等多种场景。
- 可扩展性强:支持主从复制、哨兵模式、Redis Cluster 集群。
核心数据结构(常用 5 种)
- String(字符串):最基础类型,可存储文本、数字,支持自增自减。
- Hash(哈希):适合存储对象(如用户信息),键值对的集合。
- List(列表):有序字符串集合,支持两端插入 / 删除,可实现队列 / 栈。
- Set(集合):无序不重复集合,支持交集、并集、差集运算。
- Sorted Set(有序集合):带分数的 Set,按分数排序,适合排行榜。
典型应用场景
- 缓存系统:减轻数据库压力(如商品详情、用户会话)。
- 计数器:点赞数、访问量、限流场景(利用 String 自增)。
- 消息队列:基于 List 的 LPUSH/RPOP 实现简单队列。
- 排行榜:Sorted Set 的分数排序特性(如游戏天梯、销量榜)。
- 分布式锁:利用
SET key value NX EX(不存在则设置并带过期)等实现互斥(生产需配合唯一 value、Lua 释放等)。
数据持久化机制
- RDB:定期将内存数据快照写入磁盘,恢复速度快,适合备份。
- AOF:记录每一条写命令,恢复时重放命令,数据完整性更高。
- 实际应用中常组合使用(RDB+AOF),平衡性能和可靠性。
