StackExchange.Redis超时处理

问题描述

我已经构建了一个基本的Redis适配器,该适配器在大多数情况下都可以工作。

适配器本身很轻巧

public RedisAdapter(string connectionString,int database)
{
  _redisConnection = ConnectionMultiplexer.Connect(connectionString);
  _db = _redisConnection.GetDatabase(database);
}

public async Task<string> ListLeftPopAsync(string key)
{
  var result = await _db.ListLeftPopAsync(key);
  return result;
}

的简单用法是:

var redisAdapter = new RedisAdapter("localhost:6379,password=12345,syncTimeout=3000,abortConnect=false",1);
var request = await redisAdapter.ListLeftPopAsync(RedisKeys.MyKey);

我注意到我偶尔会超时,例如以下错误:

Timeout awaiting response (outbound=0KiB,inbound=0KiB,3703ms elapsed,timeout is 3000ms),command=LPOP,next: LPOP PriorityEmailSenderList,inst: 0,qu: 0,qs: 1,aw: False,rs: DequeueResult,ws: Idle,in: 0,in-pipe: 5,out-pipe: 0,serverEndpoint: Unspecified/localhost:6379,mgr: 9 of 10 available,clientName: WIN-JN03113EBLE,IOCP: (Busy=0,Free=1000,Min=1,Max=1000),WORKER: (Busy=1,Free=32766,Max=32767),v: 2.0.601.3402

syncTimeoutabortConnect以外的所有内容均为默认设置。目前,我已将syncTimeout更改为5000,因为该错误似乎表明该操作花费了3703ms(超过阈值703ms),但是有些错误显示该操作花费了9500ms,这对我来说似乎有点长。欢迎其他建议!

有什么建议可以使超时处理更健壮?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...