Day 12:云数据库Redis
本文基于阿里云ACP云计算工程师认证课程内容整理,涵盖Redis非关系型数据库核心知识、云数据库Redis架构选型、操作配置及性能优化最佳实践。
一、非关系型数据库与Redis核心原理
什么是非关系型数据库(NoSQL)
NoSQL(Not Only SQL) 泛指非关系型数据库,区别于传统关系数据库不保证ACID特性,核心优势在于:
- 易扩展:无固定表结构,数据模型灵活
- 大数据量、高性能:支持TB级数据存储,高并发读写
- 灵活的数据模型:键值、列存储、文档、图形多种类型
- 高可用:副本集、分片集群自动故障切换
Redis核心特性
Redis(Remote Dictionary Server) 是开源的ANSI C语言编写的内存数据库,支持网络、可基于内存或持久化运行:
| 特性 | 说明 |
|---|---|
| 持久化 | 周期性地将内存更新写入磁盘,重启可恢复 |
| 数据结构丰富 | 支持String、List、Set、ZSet、Hash等 |
| 主从备份 | Master-Slave模式数据复制 |
| 原子操作 | 所有操作原子性,支持事务合并执行 |
| 发布/订阅 | 支持消息通知、Key过期等高级特性 |
Redis vs 其他数据库
MySQL/PostgreSQL(关系型)→ 复杂查询、事务强一致性 MongoDB(文档型)→ JSON文档存储、半结构化数据 Redis(键值型)→ 高性能缓存、Session存储、实时计算Redis典型使用场景:缓存层加速
在大并发场景下,直接访问数据库会造成IO压力过大:
用户请求 → 应用服务器 → Redis缓存(先访问) ↓ 未命中 数据库服务器Redis基于内存存储,QPS可达10万以上,远超MySQL等磁盘数据库,是应对高并发访问的核心武器。
考试要点:Redis不仅支持简单的Key-Value,还提供List、Set、ZSet、Hash等复杂数据结构。Redis操作是原子性的,支持事务。
二、云数据库Redis架构选型指南
阿里云Redis产品家族
阿里云提供社区版Redis和企业版Tair两大产品线:
| 版本 | 简介 | 适用场景 |
|---|---|---|
| 社区版 | 兼容开源Redis协议 | 小型网站、开发测试、个人学习 |
| 企业版Tair | 阿里集团自研,增强性能 | 企业级缓存、高性能并发、低延迟场景 |
Tair企业版三大存储形态
| 类型 | 核心技术 | 适用场景 |
|---|---|---|
| 性能增强型 | 多线程模型,性能≈社区版3倍 | 高性能、低延迟要求 |
| 持久内存型 | 掉电数据不丢失,成本降低30% | 温冷数据存储、兼顾性能与成本 |
| 容量存储型 | 基于ESSD,大容量低成本 | 大容量、低访问频率数据 |
部署架构选型
标准版-双副本(Master-Replica)
- 主节点提供日常访问,备节点提供HA高可用
- 主节点故障后30秒内自动切换到备节点
- 适用:Redis协议兼容性要求高、作为持久化数据存储、单节点性能压力可控
标准版-单副本
- 单节点部署,无备用节点
- 提供数据持久化和备份机制
- 价格优势明显,适合纯缓存业务
集群版-双副本
- 代理(Proxy)模式,一个统一连接地址访问集群
- 数据分片横向扩展,每个分片双副本高可用
- 适用:数据量大、QPS高、吞吐密集型场景
读写分离版
- 主备节点 + 只读节点 + 代理节点
- 链式复制架构,只读节点扩展使整体性能线性增长
- 适用:读多写少、读取QPS压力大的场景
容灾方案三级对比
| 灾备级别 | 架构 | 说明 |
|---|---|---|
| ★★★☆☆ | 单可用区双副本 | 主备部署在不同机器,同一可用区 |
| ★★★★☆ | 双可用区高可用 | 主备分属同一地域两个可用区,单AZ故障自动切换 |
| ★★★★★ | 全球多活分布式 | 多子实例跨地域同步,支持异地灾备、就近访问 |
考试要点:标准版-双副本的主备自动切换时间约为30秒。集群版采用代理模式,通过统一域名访问。读写分离版只读节点采用链式复制架构。
三、云数据库Redis操作配置实战
Redis使用全流程
规格选型 → 创建Redis实例 → 设置白名单 → 连接Redis实例 → 管理Redis实例规格选型关键决策点
| 决策项 | 选项 | 考量因素 |
|---|---|---|
| 存储介质 | 云盘版 vs 本地盘 | 云盘版支持存储弹性扩容 |
| 版本 | 社区版 vs 企业版 | 企业版性能更强、功能更丰富 |
| 架构 | 标准/集群/读写分离 | 根据QPS和数据量选择 |
| 容灾 | 单AZ/多AZ/全球多活 | 业务连续性要求 |
| 大版本 | Redis 5.0/6.0/7.0 | 兼容性需求 |
创建Redis实例配置项
- 地域与可用区:选择靠近应用服务器的地域
- 网络类型:专有网络(推荐),需指定VPC和交换机
- 版本类型:社区版4.0/5.0/6.0;企业版Tair
- 架构类型:单副本/双副本;标准/集群/读写分离
- 规格:根据预估内存需求选择
- 密码:需设置强密码
白名单设置
白名单是Redis安全的第一道防线,两种设置方式:
| 方式 | 适用场景 |
|---|---|
| 手动添加IP | 固定IP的客户端,精确控制 |
| 绑定ECS安全组 | 多个ECS实例授权,快速便捷 |
注意:默认白名单为
127.0.0.1(拒绝所有外部访问),必须添加客户端IP或绑定安全组才能连接。
连接Redis实例
redis-cli连接方式
# 基本连接
redis-cli -h <hostname> -p 6379
# 集群模式连接
redis-cli -h <hostname> -p 6379 -c
# 认证
AUTH <username> <password>
连接地址类型
| 地址类型 | 说明 | 需要手动申请 |
|---|---|---|
| 内网连接地址 | VPC内访问,默认提供 | 否 |
| 直连地址 | 专有网络连接 | 是 |
| 公网连接地址 | 互联网访问 | 是 |
Linux下编译安装Redis客户端
# 安装编译环境
yum install -y gcc-c++
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
# 编译安装Redis
wget https://download.redis.io/releases/redis-6.0.9.tar.gz
tar xzf redis-6.0.9.tar.gz
cd redis-6.0.9 && make && make install
四、Redis性能优化与最佳实践
性能边界与常见瓶颈
三大资源消耗源
| 资源 | 消耗源 | 影响 |
|---|---|---|
| 计算资源 | 通配符、Lua并发、PUBSUB、热点Key | 访问倾斜,无法利用所有分片 |
| 存储资源 | Stream慢消费、大Key | 数据倾斜,分片利用不均 |
| 网络资源 | KEYS命令、大Value、HGETALL全量读取 | 线程阻塞,响应延迟上升 |
CPU使用率高的排查
当平均CPU使用率>50% 或 **连续5分钟峰值>90%**时需及时排查:
- 开启审计日志分析高消耗命令
- 检查是否存在热点Key导致处理倾斜
- 评估是否需要扩容或升级规格
内存使用率高的排查
当**内存使用率>95%**时需要关注:
- 查询历史累计逐出的Key总数
- 分析命令最大时延
- 判断是否存在大Key或内存泄漏
热点Key问题解决:Proxy Query Cache
针对热点Key发起大量读请求导致的访问倾斜,阿里云Redis提供代理查询缓存功能:
- 代理节点缓存热点Key的请求和查询结果
- 有效时间内相同请求直接返回,无需与后端数据分片交互
- 大幅降低访问倾斜,提升集群整体吞吐量
典型应用场景搭配
场景一:网站缓存(单节点Redis + RDS)
推荐搭配:ECS + RDS MySQL + Redis + SLB 解决问题:高读写性能、高可用、高性价比 适用:纯缓存类业务,读多写少场景二:视频直播(Redis集群版)
推荐搭配:ECS + RDS MySQL + Redis集群版 + SLB 解决问题:流量突发、QPS百万级、低延迟 适用:视频点播、直播、秒杀场景ACP认证核心知识点速查
- Redis数据类型:String、List、Set、ZSet、Hash
- 持久化机制:RDB(周期快照)+ AOF(追加日志)
- 主从复制:Master-Slave模式,支持读写分离
- 标准版双副本:主节点故障30秒自动切换
- 集群版:代理模式,统一域名访问,数据分片横向扩展
- 白名单:默认
127.0.0.1,必须配置才能外部访问 - Tair企业版:性能增强型(3倍性能)、持久内存型、容量存储型
- 热点Key:Proxy Query Cache优化访问倾斜
- 大Key危害:CPU、内存、网络资源消耗,导致分片不均衡
- 连接命令:
redis-cli -h hostname -p 6379 [-c]
典型实验流程(沙箱环境)
创建Redis实例 → 设置白名单/添加安全组 → 连接Redis实例(redis-cli)→ 执行AUTH认证 → 执行Redis命令验证(GET/SET/DBSIZE等)相关推荐: