我使用 Azure Redis(使用 Stackexchange.Redis)作为缓存存储,它通常工作正常。但是我时不时会遇到超时错误,我无法确定它发生的原因。
我的redis连接设置:
value="dev.redis.cache.windows.net,ssl=true,password=secret,abortConnect=false,syncTimeout=3000"
我在同一秒钟内得到所有这些异常(多次调用):[我也在 GET 操作中得到这些。几乎所有这些异常都在 StringSet 和 StringGet 上。我很少在 HashSets 或 HashGets 上遇到异常]
Timeout performing SET {key}, inst: 1, mgr: ExecuteSelect, queue: 6, qu=0, qs=6, qc=0, wr=0/0, in=0/0
SocketFailure on SET
SocketFailure on SET
No connection is available to service this operation: SET
我猜设置对象花费的时间比预期的要长,这可能是由于对象很大,所以我可能会增加同步超时,但这会隐藏其他问题吗?
我只是在对 stackexchange.redis 的同步调用中得到这些异常,当调用是异步时我没有看到异常。
堆栈跟踪:
StackExchange.Redis.RedisConnectionException: SocketFailure on SET
at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) i
at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server)
at StackExchange.Redis.RedisDatabase.StringSet(RedisKey key, RedisValue value, Nullable`1 expiry, When when, CommandFlags flags)
at calling method
编辑:我正在使用 StackExchange.Redis 1.0.414 包,我正在使用 MessagePack 序列化我的对象