Redis 是一种非关系型数据库(NoSQL),支持多种数据类型(如字符串、哈希、列表等)。作为内存缓存型数据库,数据主要存储在内存中,适合存储高频访问的热点数据,减轻后端数据库压力。
Redis 的核心用途
- 存储高热数据:缓存频繁访问的数据(如会话信息、令牌)。
- 分压后端数据库:减少对主数据库的直接查询。
- 支持海量数据:可存储多种结构化或非结构化数据。
Redis 的高热数据识别与淘汰机制
识别高热数据:
- 命令率统计:通过监控命令调用频率(如
INFO commandstats)识别高频访问的 Key。 - 淘汰策略:通过配置或命令主动淘汰低优先级数据,保留高热数据。
淘汰策略配置:
- 配置文件定义规则:
maxmemory-policy volatile-lru # 优先淘汰最近最少使用的带过期时间的 Key - 命令行临时调整:
redis-cli config set maxmemory-policy allkeys-lru
Redis 持久化机制
RDB(快照持久化):
- 触发条件:
- 配置文件中定义规则(如
save 900 1表示 900 秒内至少 1 次修改触发快照)。 - 手动执行
bgsave命令。
- 配置文件中定义规则(如
- 特点:全量备份,重启时恢复速度快。
AOF(追加日志持久化):
- 触发策略:
appendfsync everysec # 每秒同步一次(平衡性能与数据安全) - 特点:记录每个写操作,数据完整性更高,但文件体积较大。
数据恢复优先级:
Redis 重启时优先加载 AOF 文件(若启用),否则使用 RDB 文件恢复。
Redis 集群模式
1. 主从复制
- 原理:主节点(Master)异步复制数据到从节点(Slave),实现读写分离。
- 用途:数据冗余与负载均衡。
2. 哨兵模式(Sentinel)
- 原理:
- 哨兵集群(奇数节点)通过
hello频道同步信息,监控主节点状态。 - 主节点被标记为“主观下线”后,若多数哨兵确认则转为“客观下线”,触发故障转移。
- 选举新主节点依据从节点的
offset(数据同步偏移量)。
- 哨兵集群(奇数节点)通过
- 部署建议:至少 3 个哨兵节点,6 台服务器确保高可用。
3. Redis Cluster(集群模式)
- 特点:数据分片(Sharding)存储,支持横向扩展,自动故障转移。
总结要点
- 持久化区别:RDB 适合快速恢复,AOF 保证数据完整性。
- 集群方案:主从复制用于基础冗余,哨兵实现高可用,Cluster 解决大规模数据分片。
- 关键命令:
bgsave(触发 RDB)、config set(动态调整策略)。