Skip to content

性能优化 ​

内存优化 ​

数据结构选择 ​

场景推荐结构原因
对象存储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 128
bash
# 查看慢查询
SLOWLOG GET 10

INFO 命令 ​

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,
})

生产部署建议 ​

  1. 硬件:SSD 存储,充足内存
  2. 网络:低延迟网络
  3. 监控:Prometheus + Grafana
  4. 备份:定期快照备份
  5. 高可用:哨兵或集群

总结 ​

Redis 性能优化需要从内存、网络、命令和架构多个维度考虑。

Redis 学习系列到此结束!