大家好,我在golang gin中做了一个项目,并且我使用“github.com/go-redis/redis/v7”在其中集成了redis Clusterclient
附注我使用的 Redis 是托管在 AWS 上的 Redis 集群
我使用的 redis 命令只是
redis.Get
和 redis.Set
。
现在我已经制作了一个API并在其中使用了缓存,当我在本地运行它时,响应时间约为200到300ms,这真是太棒了(感谢Redis)
现在,当我开始对大约 100 个并发用户对同一 API 进行负载测试时,响应时间显着增加(大约 4 秒)。我使用跨度来监视代码不同部分所花费的时间,我得到了这个
从主要获取,从次要获取用于
redis.Get
命令
设置主要、设置次要用于
redis.Set
这两个命令都需要大约 1 秒来执行,这是不可接受的,
任何人都可以告诉我一些方法,以便我可以解决这个问题 并减少redis命令执行的时间
好吧,我已经以某种方式解决了这个问题。 首先,我将 golang redis 客户端库从 go-redis/v7 更新为 go-redis/v8 。并且它取得了显着的进步。我会建议每个人都这样做。
但是我仍然受到响应时间过长的困扰,所以我的下一步是更改 redis 基础设施。早些时候我使用的是只有 1 个分片的 Redis 集群,但现在我已经转移到另一个有 4 个分片的 Redis ..
这产生了巨大的差异,我的响应从 1200 毫秒变为 180 毫秒。请注意,这些响应时间是在我对 100 个并发用户进行负载测试时出现的,平均速度约为 130rps
简而言之,升级你的redis客户端,升级你的redis基础设施
@iron_man83 你是如何设置4个分片的redis集群的。