stackexchange.redis超时处理

ifsvaxew  于 2021-06-08  发布在  Redis
关注(0)|答案(0)|浏览(569)

我已经构建了一个基本的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,Min=1,Max=32767), v: 2.0.601.3402

除了 syncTimeout 以及 abortConnect 是默认值。暂时来说,我变了 syncTimeout 到5000,因为错误似乎表明操作需要3703ms(超过阈值703ms),但是一些错误显示操作需要9500ms,这对我来说似乎有点长。欢迎提出其他建议!
有什么建议可以让它在处理超时时更健壮一点吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题