Redis 是一个高性能的键值对存储系统,广泛应用于缓存、消息队列、会话管理等场景。以下是 Redis 的核心知识点总结:
一、Redis 基本概念
1. 什么是 Redis
- 定义:Redis 是一个开源的、高性能的 NoSQL 数据库,支持多种数据结构,数据存储在内存中,也可以持久化到磁盘。
- 特点:高性能、支持丰富的数据类型、持久化、主从复制、Lua 脚本、事务、自动分片等。
2. 数据类型
- String:简单的键值对,值可以是字符串、数字或二进制数据。
- Hash:键值对集合,适合存储对象。
- List:链表,可以用作队列、栈等。
- Set:无序集合,可以进行集合运算(交集、并集、差集)。
- Sorted Set:有序集合,元素按分数排序。
- Bitmap:位数组,可以进行位操作。
- HyperLogLog:基数估计算法,用于近似计算集合的基数。
二、Redis 的核心功能
1. 数据持久化
- RDB(Redis Database):将内存中的数据定期快照保存到磁盘,恢复时加载最新的快照文件。
- AOF(Append Only File):将每次写操作追加到日志文件中,恢复时重放日志记录以恢复数据。
- 混合持久化:Redis 6.0 引入的功能,将 RDB 快照和 AOF 日志混合存储,以加速恢复过程。
2. 发布/订阅(Pub/Sub)
- 机制:允许消息发送者(发布者)将消息发送到频道,多个消息接收者(订阅者)可以订阅频道来接收消息。
- 应用场景:实时消息通知、日志收集系统等。
3. 事务(Transaction)
- MULTI/EXEC:Redis 事务由 MULTI、EXEC、WATCH 等命令组成,事务内的命令被打包执行。
- 乐观锁:通过 WATCH 命令实现,监控某个键值,如果事务执行期间该键被其他客户端修改,则事务被取消。
4. Lua 脚本
- 使用:通过 EVAL 命令执行 Lua 脚本,实现复杂的原子操作。
- 特点:原子性、可以封装多个命令、减少网络开销。
三、Redis 的高可用与集群
1. 主从复制
- 主从结构:Redis 支持主从复制,一个主节点(Master)可以有多个从节点(Slave),从节点复制主节点的数据。
- 复制延迟:从节点可能有短暂的延迟,主从数据同步不是完全实时的。
- 读写分离:主节点负责写操作,从节点负责读操作,提高读写性能。
2. 哨兵模式(Sentinel)
- 功能:Redis Sentinel 监控多个 Redis 实例,自动故障转移,保证系统的高可用性。
- 自动故障转移:如果主节点宕机,Sentinel 会选举一个从节点提升为主节点。
- 配置:配置多个 Sentinel 节点进行监控,增强可靠性。
3. Redis 集群
- 分片存储:Redis 集群通过哈希槽将数据分布在多个节点上,每个节点负责一部分数据。
- 容错:集群节点之间相互通信,如果某个节点宕机,集群可以自动进行故障转移。
- 水平扩展:通过增加节点,可以水平扩展 Redis 集群的存储容量和处理能力。