Enyim을 얻을 수 없습니다. Couchbase와 함께 작동하려면 MemcachedClient를 멤버링합니다

StackOverflow https://stackoverflow.com//questions/12677445

문제

CouchBase가 Client를 Memcached Server에 제공하지만 Enyim.Caching 클라이언트를 작동 시키려고합니다.

여기에 Couchbase 클라이언트 (작품)를 사용하는 사소한 C # 코드가 있습니다. enyim memcachedclient와 똑같은 것 :

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 값은 null로 반환됩니다. 오류가 발생하지 않습니다.

i는 Config에서 Memcached에 대한 인증 노드의 zone 값을 중심으로 문제를 해결합니다. Enyim.Caching 소스 코드 (GitHub에서 검색)에있는 데모 맵 코드에서 영역이 지정되지 않은 경우 Enyim은 오류가 발생합니다. 즉, DemoApp은 Zone ISN '이므로 DemoApp이 작동하지 않습니다. T는 제공됩니다.

나는 이것이 문제라는 것을 확신하지 못합니다. 그러나 나는 구역을 떠날 수 없다는 것을 알고 있지만, 그 가치에 무엇을 사용할 것이 무엇인지 모른다. 나는 'authz'가 사용 된 예를 보았지만 그 차이가없는 것처럼 보입니다.

누구나 내가 여기서 뭘 잘못하고 있는지 보이는가? 어떤 도움도 감사합니다! :)

도움이 되었습니까?

해결책

확인 - 나는 무슨 일이 일어나고 있는지 알아 냈습니다.나는 Couchbase 콘솔로 돌아가서 내 유일한 데이터가 Couchbase 타입의 데이터를 발견했습니다.따라서 Memcached 유형의 새로운 데이터를 만들었습니다.나는이 버킷 유형이 인증을 필요로하지 않는다는 것을 알아 차렸다.나는 그것을 새로운 항구에게 주어야했다.

내 구성 파일을 최소한으로 변경 한 후에는 Enyim.Caching MemcachedClient 코드가 완벽하게 작동했습니다!

여기에 내 새로운 Enyim.Caching Config STOME은 지금처럼 보입니다 :

<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>
.

이 답변을 솔루션으로 표시 할 수 있습니다.바라건대 이것은 누군가가 내 knuckleheaded 실수를 저질 수있게 도와줍니다.:)

업데이트 :

John Zablocki가 제공하는 다른 솔루션의 주석을 살펴보십시오.감사합니다 요한!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top