我是新来使用redis的。我遇到了io超时问题。代码如下:
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use enter code heredefault DB
WriteTimeout: time.Millisecond * 100,
ReadTimeout: time.Millisecond * 100,
PoolSize: 20,
})
for {
_, err := client.Publish("ch", strings.Repeat(strconv.Itoa(rand.Int()), 10)).Result()
if err != nil {
fmt.Println(err)
}
}
}
几分钟后,将出现超时问题。就像this:read tcp [::1]:54099->[::1]:6379:i/o超时。这是因为没有潜艇还是潜艇速度慢?请帮帮我。谢谢!
1条答案
按热度按时间a11xaf1n1#
100毫秒的超时是相当激进的
在go redis中,默认超时为3秒,这不是不可想象的,因为给定一个大样本(如您所说运行几分钟),一些发布命令可能需要超过100毫秒的时间。这取决于您的服务器特性以及是否有其他客户端使用同一服务器。
我建议您使用redis benchmark实用程序来了解您从redis示例获得的性能,看看您的超时与publish命令的p99往返时间有多接近
https://redis.io/topics/benchmarks