微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

StackExchange.Redis超时处理

如何解决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 举报,一经查实,本站将立刻删除。