Pergunta

Eu percebo que Couchbase fornece um cliente para o seu servidor memcached, mas eu estou tentando chegar a enyim.o cache de cliente para funcionar.

Aqui está o meu triviais de código c# que usa o Couchbase cliente (que funciona) e, em seguida, praticamente a mesma coisa com o 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();
    }
}

Aqui está o meu 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>

Quando eu passo através do código, o Couchbase cliente parece funcionar bem.O método Get devolve "somevalue" como esperado.O código também o prazer de passos através do MemcachedClient código, mas quando eu passo pela Loja método, ele trava por 10 segundos (acho que é o tempo limite) e, em seguida, o myVal valor retorna null.Sem erros são lançados.

Eu suspeito que o problema gira em torno da zone valor da autenticação nó para memcached no config.Em DemoApp código que está na enyim.o cache de código-fonte (obtido a partir do Github), zona nunca é especificado, mas enyim lança um erro se a zona não é fornecida - i.e.DemoApp não funciona como é porque a zona não é fornecida.

Não tenho certeza se este é o problema, mas eu sei que eu não posso deixar de zona, mas eu não sei o que usar para esse valor.Eu vi um exemplo onde 'AUTHZ" foi utilizado, mas que não parece fazer qualquer diferença.

Alguém vê o que eu estou fazendo de errado aqui?Qualquer ajuda é apreciada!:)

Foi útil?

Solução

Ok - eu descobri o que estava acontecendo.Eu voltei para o Couchbase Console e notei que a minha única databucket foi do tipo Couchbase.Então, eu criei um novo databucket do tipo Memcached.Notei que esse balde exigido nenhum tipo de autenticação.Eu tive que dar-lhe uma nova porta.

Uma vez eu fiz o mínimo de alterações para o meu arquivo de configuração, o enyim.o cache de MemcachedClient código funcionou perfeitamente!

Aqui está o que o meu novo enyim.o cache de configuração coisas parece agora:

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

Vou marcar esta resposta como solução assim que eu sou capaz.Espero que isto possa ajudar alguém de fazer o meu knuckleheaded erro.:)

ATUALIZAÇÃO:

Dê uma olhada nos comentários de outra solução fornecida por John Zablocki.Obrigado João!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top