首页 > 解决方案 > StackExchange.Redis.RedisTimeoutException - 由于 qs 人们如何解决它?

问题描述

我有一些大型有效负载进入 redis(最多 40 kb)。

StackExchange.Redis.RedisTimeoutException: 执行 SETEX cachekeyID (5000ms) 超时,inst: 1, qs: 11, in: 2837, serverEndpoint: servername:6380, mgr: 10 of 10 available, clientName: 419c1daaa93f, IOCP: (Busy=0, Free=1000,Min=1,Max=1000), WORKER: (Busy=39,Free=32728,Min=1,Max=32767), v: 2.0.519.65453 (一些普通客户端请看这篇文章- 可能导致超时的问题:https ://stackexchange.github.io/StackExchange.Redis/Timeouts )

你是如何解决这个问题的?通过按照建议对键进行分块,或者通过打开多个 ConnectionMultiplexer 并自己处理池,如果您想在对调用者透明的通用解决方案的接口后面执行此操作,这两者都不是简单的任务?

标签: c#asp.net-coreredis.net-corestackexchange.redis

解决方案


有时我遇到了同样的问题redis超时。以下更改解决了我的问题。

  1. 为 Redis 使用 Linux 服务器而不是 windows 服务器
  2. Get 和 Set 操作使用命令标志,Get 操作使用
    CommandFlags.PreferSlave,Set 使用 CommandFlags.FireAndForget。
  3. 根据应用程序服务器配置更改 processModel更多
  4. 在这里禁用redis持久化更多描述

推荐阅读