0

问题背景

大家好,我在 golang gin 中做了一个项目,我已经使用“github.com/go-redis/redis/v7”在其中集成了redis Clusterclient

我使用的 PS Redis 是一个托管在 AWS 上的 redis 集群

我使用的 redis 命令很redis.Get简单redis.Set

现在我制作了一个 API 并在其中使用了缓存,当我在本地运行它时,响应时间大约是 200 到 300 毫秒,这太棒了(感谢 Redis

主要问题

现在,当我开始对大约 100 个并发用户的同一个 API 进行负载测试时,响应时间会显着增加(大约 4 秒)。我使用 spans 来监控代码的不同部分所花费的时间,我得到了这个

在此处输入图像描述

从主要获取,从次要获取用于redis.Get命令

设置主要设置次要用于redis.Set

这两个命令都需要大约 1 秒的时间来执行,这是不可接受的,

谁能告诉我一些方法,以便我可以解决这个问题并减少redis命令执行的时间

4

1 回答 1

0

好的,所以我以某种方式解决了这个问题。首先,我将我的 golang redis 客户端库从 go-redis/v7 更新为 go-redis/v8 。它取得了显着的进步。我会建议每个人都这样做。

但是我的响应时间仍然很长,所以下一步对我来说是更改 redis 基础设施。早些时候我使用了一个只有 1 个分片的 redis 集群,但现在我已经转移到另一个有 4 个分片的 redis ..

它产生了巨大的变化,我的响应从 1200 毫秒到 180 毫秒。请注意,当我对 100 个并发用户进行负载测试时,这些响应时间即将到来,平均速度约为 130rps

所以简而言之,升级你的 redis 客户端,升级你的 redis 基础设施

于 2022-01-29T04:50:19.377 回答