Redis 入门与实践(2025)
Redis 从经典缓存演进为多模型数据平台(Strings/Hashes/Lists/Sets/Sorted Sets/Streams/JSON/TimeSeries/Bloom/Graph/Vector)。本文聚焦全栈工程师常见使用方式、部署方案、性能调优与 AI 场景拓展。
Redis 的核心优势
- 极致性能:内存存储 + 单线程事件循环,QPS 可达百万级。
- 丰富数据结构:除五大基础结构外,还包括 HyperLogLog、Geo、Streams、JSON(RedisJSON)、时间序列(RedisTimeSeries)、布隆过滤器、向量搜索(Redis Stack 2.6+)。
- 简单可靠:复制、哨兵、集群、AOF/RDB 持久化,支持延迟双写与一致性读。
- 生态繁荣:Redis Stack、云服务(AWS ElastiCache、阿里云 Tair、腾讯云 CRS、Azure Cache)、客户端驱动完善。
安装与部署
- 本地体验:
brew install redis-stack
或docker run -p 6379:6379 redis/redis-stack:7.2.0
- 生产部署:
- 单实例 + Sentinel 自动故障转移
- Redis Cluster(分片 + 复制)扩展写入吞吐
- 企业/云方案:Redis Enterprise / Tair / ElastiCache / Azure Cache
- 安全配置:
protected-mode yes
、启用 ACL(ACL SETUSER
)、TLS/内网访问- 持久化策略:
appendonly yes
+appendfsync everysec
或混合持久化 - 资源控制:
maxmemory
+ 淘汰策略(allkeys-lru
、volatile-ttl
)
常用数据结构速查
类型 | 命令示例 | 场景 |
---|---|---|
String | SET key value 、GET key 、INCR | 缓存、计数器、分布式锁 |
Hash | HSET user:1 name Tom | 用户画像、配置表 |
List | LPUSH queue task 、BRPOP | 简易队列、消息缓冲 |
Set | SADD tag:vue 1 、SINTER | 去重、社交关系 |
Sorted Set | ZADD ranking 100 u1 、ZRANGE ... WITHSCORES | 排行榜、延时队列 |
Bitmap | SETBIT online 1 1 | 活跃度统计、签到 |
HyperLogLog | PFADD uv 2025-01-01 | UV 估算 |
Stream | XADD events * type signup 、XREADGROUP | 事件流、实时消费 |
JSON* | JSON.SET doc $ '{"title":"Redis"}' | 文档存储、配置中心 |
TimeSeries* | TS.ADD sensor:1 * 25 | IoT/监控时间序列 |
Vector* | FT.CREATE + HSET key vector $blob | 向量检索、RAG |
带 * 的结构需 Redis Stack 或模块支持。
Redis 作为缓存的设计要点
- 缓存粒度:评估是整页缓存、接口缓存还是局部字段缓存。
- 失效策略:结合 TTL、惰性删除、主动刷新;热点数据可采用逻辑过期 + 后台异步刷新。
- 穿透/雪崩/击穿防护:
- 空值处理、布隆过滤器、API 限流
- 随机 TTL 分散失效
- 加锁或互斥队列避免击穿
- 一致性:写入策略(先删缓存再写 DB、双写延迟双删、订阅 binlog),或使用 Canal/Debezium 同步。
发布订阅与消息流
PUB/SUB
:适合实时通知、聊天室,但不保证持久化。- Redis Streams:支持消费组、确认机制、阻塞读取,是构建轻量级消息队列的首选。
- 与 Kafka/Flink 协同:Streams 可作为边缘缓冲或快速启动的事件系统。
分布式锁
- 基础实现:
SET resource value NX PX 30000
- RedLock:多节点加锁 + 过期时间,适合秒杀等场景(需注意时钟漂移)。
- 建议配合
lua
脚本或EVAL
保证原子性,或使用官方redis-lock
模块。
Redis 与 AI/向量搜索
- Redis Stack 提供
VECTOR
索引,支持内积、余弦、欧氏距离。 - 常规流程:
- 使用 OpenAI/文心/通义等模型生成嵌入向量
- 通过
HSET
存储文本 +FT.SEARCH
或FT.AGGREGATE
进行召回 - 结合
Hybrid Search
(文本 + Vector)提升精准度
- 与 LangChain、LlamaIndex、Flowise 等框架集成简单,支持 RAG、个性化推荐。
观测与调优
- 常用命令:
INFO
,MONITOR
,SLOWLOG
,LATENCY DOCTOR
- 性能监控:结合
redis_exporter
+ Prometheus/Grafana,关注 QPS、内存、命中率、复制延迟 - 持久化调优:AOF 重写(
auto-aof-rewrite-percentage
)、混合持久化、RDB Snapshot 周期 - 集群维护:
redis-cli --cluster check
/fix
,定期备份配置与持久化文件
推荐工具与客户端
- GUI:RedisInsight、Another Redis Desktop Manager、Medis
- CLI:
redis-cli
、rdcli
、iredis
- Node.js:
ioredis
、redis
(官方驱动) - Python:
redis-py
、aioredis
- Java:
Lettuce
、Redisson
参考资料
- Redis 官方文档与 Redis Stack 指南
- 《Redis 设计与实现》《Redis 实战》
- AWS/阿里云/Tencent Redis 最佳实践
- Redis Labs 2024 State of Redis 报告
建议结合真实业务(缓存 + 消息流 + 向量搜索)搭建沙盘项目,并通过 Benchmark 工具(
redis-benchmark
,memtier_benchmark
)验证性能瓶颈。
↑