性能优化
内存优化
数据结构选择
| 场景 | 推荐结构 | 原因 |
|---|---|---|
| 对象存储 | Hash | 字段独立操作 |
| 列表数据 | List | 有序 |
| 去重 | Set | 自动去重 |
| 排序 | ZSet | 自动排序 |
键命名优化
bash
# 不推荐:键名过长
user:profile:information:detailed:version2:user_id_12345
# 推荐:键名简短
u:12345内存配置
conf
# 最大内存
maxmemory 2gb
# 内存策略
maxmemory-policy allkeys-lru性能监控
慢查询日志
conf
slowlog-log-slower-than 10000 # 微秒
slowlog-max-len 128bash
# 查看慢查询
SLOWLOG GET 10INFO 命令
bash
# 查看统计信息
INFO stats
INFO memory
INFO persistence监控指标
# 内存
used_memory
used_memory_peak
mem_fragmentation_ratio
# 性能
instantaneous_ops_per_sec
total_commands_processed
# 网络
connected_clients
total_net_input_bytes
total_net_output_bytes性能优化技巧
1. 使用 Pipeline
go
pipe := rdb.Pipeline()
cmd1 := pipe.Get(ctx, "key1")
cmd2 := pipe.Get(ctx, "key2")
pipe.Exec(ctx)2. 批量操作
go
// 批量设置
rdb.MSet(ctx, "k1", "v1", "k2", "v2")
// 批量获取
vals, _ := rdb.MGet(ctx, "k1", "k2").Result()3. 避免大 Key
- 单个 key 大小 < 10KB
- 使用 Hash 分拆大对象
4. 连接池配置
go
rdb := redis.NewClient(&redis.Options{
PoolSize: 100,
MinIdleConns: 20,
PoolTimeout: 30 * time.Second,
})生产部署建议
- 硬件:SSD 存储,充足内存
- 网络:低延迟网络
- 监控:Prometheus + Grafana
- 备份:定期快照备份
- 高可用:哨兵或集群
总结
Redis 性能优化需要从内存、网络、命令和架构多个维度考虑。
Redis 学习系列到此结束!