在并发访问期间,Redis花费太多时间来执行简单命令 [英] Redis taking too much time to execute simple commands during concurrent access

查看:52
本文介绍了在并发访问期间,Redis花费太多时间来执行简单命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题背景

大家好,我用Golang gin做了一个项目,并使用"github.com/go-redis/redis/v7"集成了redis ClusterClient

我使用的P.S.Redis是一个托管在AWS上的Redis集群

我使用的redis命令仅限于redis.Getredis.Set

现在我已经做了一个API,并在其中使用了缓存,在本地运行时,响应时间在200到300ms左右,这是非常棒的(感谢Redis)

主要问题

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

从主从辅助获取用于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基础设施

这篇关于在并发访问期间,Redis花费太多时间来执行简单命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆