首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使Enyim.Caching MemcachedClient与Couchbase一起使用

无法使Enyim.Caching MemcachedClient与Couchbase一起使用
EN

Stack Overflow用户
提问于 2012-10-02 00:40:52
回答 1查看 5.4K关注 0票数 0

我知道Couchbase为他们的memcached服务器提供了一个客户端,但我正在尝试让enyim.caching客户端正常工作。

下面是我的简单c#代码,它使用Couchbase客户端(它可以工作),然后使用enyim MemcachedClient做几乎相同的事情:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<?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值返回为null。不会抛出错误。

我怀疑问题与配置中memcached的身份验证节点中的zone值有关。在enyim.caching源代码中的DemoApp代码(从Github检索)中,从来没有指定区域,但是如果没有提供区域,enyim就会抛出一个错误--即DemoApp不能按原样工作,因为没有提供区域。

我不确定这就是问题所在,但我知道我不能省略zone,但我不知道如何使用该值。我见过一个使用'AUTHZ‘的例子,但这似乎没有什么不同。

有没有人看到我做错了什么?感谢您的帮助!:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-02 04:32:35

好了--我知道是怎么回事了。我回到Couchbase控制台,注意到我唯一的数据库是Couchbase类型的。因此,我创建了一个新的Memcached类型的数据库。我注意到这种存储桶类型不需要身份验证。我确实必须给它一个新的端口。

一旦我对我的配置文件做了最小的修改,enyim.caching MemcachedClient代码就可以完美地工作了!

下面是我新的enyim.caching配置文件现在的样子:

代码语言:javascript
复制
<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>

我会尽快将这个答案标记为解决方案。希望这能帮助别人避免犯我愚蠢的错误。:)

更新:

看看John Zablocki提供的另一个解决方案的评论。谢谢约翰!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12677445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档