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)验证性能瓶颈。
↑