No se puede obtener Enyim.El almacenamiento en caché MemcachedClient para trabajar con Couchbase

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

Pregunta

Me doy cuenta de que Couchbase ofrece a un cliente a su servidor memcache, pero estoy tratando de conseguir el enyim.el almacenamiento en caché de cliente para trabajar.

Aquí está mi trivial de código de c# que utiliza el Couchbase cliente (que funciona) y, a continuación, más o menos lo mismo con el 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();
    }
}

He aquí mi 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>

Cuando me paso a través del código, el Couchbase cliente parece funcionar bien.El método Get devuelve "somevalue" como era de esperar.El código también felizmente pasos a través de la MemcachedClient código, pero cuando me paso a través del método de la Tienda, se cuelga durante 10 segundos (creo que ese es el tiempo de espera) y, a continuación, el myVal valor devuelve null.No se generan errores.

Sospecho que el problema gira en torno a la zone valor en la autenticación del nodo para memcached en la configuración.En el DemoApp código que está en el enyim.almacenamiento en caché de código fuente (extraído de Github), la zona nunca se especifica, pero enyim genera un error si la zona no está previsto - es decir,el DemoApp no funciona como es debido a que la zona no está previsto.

No estoy seguro de que este es el problema, pero sí sé que yo no puedo salir de la zona, pero no sé qué usar para ese valor.He visto un ejemplo en donde la 'AUTHZ" fue utilizado, pero que no parece hacer ninguna diferencia.

¿Alguien vea lo que estoy haciendo mal aquí?Cualquier ayuda es muy apreciada.:)

¿Fue útil?

Solución

Ok - me di cuenta de lo que estaba pasando.Volví a la Couchbase Consola y noté que mi única databucket fue de tipo Couchbase.Así, he creado una nueva databucket de tipo de Memcached.Me di cuenta de que este tipo de intervalo no requiere autenticación.Tuve que darle un nuevo puerto.

Una vez que hice los cambios mínimos a mi archivo de configuración, el enyim.el almacenamiento en caché MemcachedClient código funcionó a la perfección!

He aquí lo que mi nuevo enyim.el almacenamiento en caché de configuración cosas se ve ahora:

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

Voy a marcar esta respuesta como la solución tan pronto como puedo.Espero que esto pueda ayudar a alguien a hacer mi knuckleheaded error.:)

ACTUALIZACIÓN:

Echa un vistazo en los comentarios de otra solución proporcionada por Juan Zablocki.Gracias Juan!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top