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値がnullとして返されます。エラーはスローされません。
zone
問題は、構成内のmemcachedの認証ノードの値に関連していると思われます。enyim.cachingソースコード(Githubから取得)にあるDemoAppコードでは、ゾーンが指定されることはありませんが、ゾーンが指定されていない場合、enyimはエラーをスローします。つまり、ゾーンが指定されていないため、DemoAppはそのまま機能しません。 tが提供されます。
これが問題かどうかはわかりませんが、ゾーンを除外できないことは知っていますが、その値に何を使用すればよいかわかりません。'AUTHZ'が使用された例を見たことがありますが、それは何の違いもないようです。
私がここで間違っていることを誰かが見ていますか?どんな助けでも大歓迎です!:)