Redis 在并发访问时花费太多时间来执行简单命令

问题描述 投票:0回答:2

问题背景

大家好,我在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命令执行的时间

redis performance-testing redis-cluster go-redis
2个回答
0
投票

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

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

这产生了巨大的差异,我的响应从 1200 毫秒变为 180 毫秒。请注意,这些响应时间是在我对 100 个并发用户进行负载测试时出现的,平均速度约为 130rps

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


0
投票

@iron_man83 你是如何设置4个分片的redis集群的。

© www.soinside.com 2019 - 2024. All rights reserved.