【问题标题】:Distinguish timeout and no-data cases区分超时和无数据情况
【发布时间】:2014-10-12 10:36:56
【问题描述】:

目前在我的项目中,我遇到了请求数据时两种情况没有区别的问题:

  1. 当 db 中实际上没有数据时(对于请求的参数)
  2. 发生超时时(或例如当 VPN 连接丢失时)

在这两种情况下方法:

object Get(string key)
    Member of Enyim.Caching.IMemcachedClient

仅返回 null。我想在第二种情况下捕获异常或其他东西以区分这两种情况。

对于SocketPool receiveTimeout 设置为{00:00:01},但即使是过期异常也不会像我预期的那样抛出。能给个建议吗?

【问题讨论】:

    标签: c# .net couchbase nosql


    【解决方案1】:

    MemcachedClient 实现了两个接口:IMemcachedClientIMemcachedResultsClientIMemcachedClient 上的每个基本方法在返回更详细结果的另一个接口上都有一个等效的ExecuteXXX 方法。

    你可以这样做:

    var result = client.ExecuteGet<MyType>(key);

    结果将是一个IGetOperationResult,您可以查询各种状态代码,或获取日志消息或其他信息。

    由于您指定的原因,我倾向于始终更喜欢 ExecuteXXX() cals 而不是更简单的 XXX() cals,即使使用它们可能需要更多代码。

    【讨论】:

    • 谢谢,这个答案!我应该补充的是,在将 CouchBase.dll 更新到 1.1 或更高版本之前,我没有找到这些方法
    猜你喜欢
    • 2017-08-08
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2014-11-26
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多