https://mp.weixin.qq.com/s/wzTfo5qCuc9gmI5Srnpdyg

陈凯玲(“KL博主”):TapTap infra 工程师。开源项目 kkFileView 等 kk 系列项目作者,Apollo 配置中心项目 PMC 。


优化成果

2023 年,通过切换低成本的 Redis ESSD 实例、实施流量压缩方案、清理无效数据、治理实例 TTL、下线无用实例等措施,自研了 Redis 流量复制 & 流量放大、Redis 数据迁移、Redis 数据在线压缩 & 解压缩、Redis 数据定向清理 & 定向指定 TTL、Redis 扫描分析 Key 最后访问时间等工具辅助方案落地。实现 Redis 费用降本 46 万 / 月

PS:文中所述 Redis , 均为阿里云的 Redis 相关产品。

优化措施

以下优化措施没有优先顺序,在我司的大致的优化比例如下表:

优化措施 优化比例
1、清理未使用的实例 5%
2、实例降配:提高内存使用率 15%
3、使用场景打标,允许部分场景内存用满 1%
4、合理设置 TTL 8%
5、清理历史数据 6%
6、改进 kv 结构 1%
7、定期 scan, 释放已过期的内存 1%
8、降低可用性 3%
9、压缩 value 32%
10、迁移到兼容 Redis 协议的磁盘存储项目 28%

1、清理未使用的实例

有的业务下线了,实例还在,需要清理这类实例。

这个是最容易实现的,最快能优化的,通过采集 Redis Metrics 数据,筛出长期 QPS 非常低的实例(集群版本 Redis, 自身也会有 ping 等保活访问),观测连接数据等,和业务确认并释放

2、实例降配:提高内存使用率

各种因素,导致实际使用的内存,和申请的内存差别较大,导致使用率上不去,存在内存浪费。比如:

这些场景需要通过降配,将使用率至少稳定在 70% 左右。

降配时,需要注意如下:

  1. 集群降配到主从,注意业务端的链接模式是否兼容

  2. 大集群降配到小集群,注意是否有大 key 限制