无法获取Enyim.Caching MemcachedClient与Couchbase工作(Unab

2019-11-01 02:48发布

我认识到,Couchbase向客户端提供自己的memcached服务器,但我试图让enyim.caching客户工作。

这里是我使用的Couchbase客户端(工作),然后几乎与enyim MemcachedClient同样的事情琐碎的C#代码:

class Program
{
    static void Main(string[] args)
    {
        var client = new CouchbaseClient();

        client.Store(StoreMode.Set, "somekey", "somevalue");

        var somevalue = client.Get<string>("somekey");

        Console.WriteLine(somevalue);
        Console.ReadLine();

        var mclient = new MemcachedClient();
        mclient.Store(StoreMode.Set, "Hello", "World");
        var myVal = mclient.Get<string>("Hello");
        Console.WriteLine(myVal);
        Console.ReadLine();
    }
}

这里是我的app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
      <section name="couchbase" type="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/>
      <sectionGroup name="enyim.com">
        <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />      
      </sectionGroup>
    </configSections>
    <couchbase>
      <servers bucket="default" bucketPassword="myPassword">
        <add uri="http://127.0.0.1:8091/pools"/>
      </servers>
    </couchbase>
<enyim.com>
  <memcached>
    <servers>
      <add address="127.0.0.1" port="8091" />
    </servers>
    <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:10:00" deadTimeout="00:02:00" />
    <authentication type="Enyim.Caching.Memcached.PlainTextAuthenticator, Enyim.Caching" zone="" userName="Administrator" password="myPassword" />
  </memcached>
</enyim.com>
<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>  
</configuration>

当我通过代码中,Couchbase客户端似乎很好地工作。 GET方法返回预期“someValue中”。 该代码还高兴地通过MemcachedClient码步骤,但是当我通过Store方法步骤,它挂起了10秒(我认为这是超时),然后将值设为myVal收益为空。 不会引发任何错误。

我怀疑周围的问题围绕zone在在配置memcached的鉴别节点值。 在中的demoApp代码是在enyim.caching源代码(从GitHub检索),区从未指定的,但如果没有设置该区域被enyim引发错误 - 即中的demoApp不起作用为是因为区ISN” Ť提供。

我不知道这是问题,但我知道,我不能离开区域了,但我不知道是干什么用该值。 我见过其中使用“的authz”的例子,但似乎没有任何区别。

有谁看到我在做什么错在这里? 任何帮助表示赞赏! :)

Answer 1:

好了 - 我想通了什么事情。 我回到了Couchbase控制台,发现我唯一databucket是类型Couchbase的。 所以,我创建了一个类型的Memcached的新databucket。 我注意到,这是斗式,无需验证。 我必须给它一个新的端口。

一旦我做了最小的变化我的配置文件,该enyim.caching MemcachedClient代码完美!

下面是我的新enyim.caching配置的东西看起来像现在:

<enyim.com>
  <memcached>
    <servers>
      <add address="127.0.0.1" port="8095" />
    </servers>
    <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:10:00" deadTimeout="00:02:00" />
  </memcached>
</enyim.com>

我会尽快为我能标记这个答案的解决方案。 希望这可以帮助别人作出我的错呆头鹅。 :)

更新:

参加由约翰Zablocki提供了另一种解决方案的评论一起来看看。 感谢约翰!



文章来源: Unable to get Enyim.Caching MemcachedClient to work with Couchbase