我意識到Couchbase提供了一個客戶端到他們的memcached服務器,但我試圖讓enyim.caching客戶端工作。無法獲取Enyim.Caching MemcachedClient與Couchbase配合使用
這裏是我使用的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值返回爲空。沒有錯誤被拋出。
我懷疑問題是圍繞配置中memcached的身份驗證節點中的zone
值。在enyim.caching源代碼中的DemoApp代碼(從Github檢索)中,zone永遠不會被指定,但是如果未提供區域,則enyim會拋出錯誤 - 即DemoApp不能正常工作,因爲zone isn'提供。
我不確定這是什麼問題,但我確實知道我不能離開區域,但我不知道該用什麼值。我見過一個使用'AUTHZ'的例子,但這似乎沒有任何區別。
有沒有人看到我在做什麼錯在這裏?任何幫助表示讚賞! :)
另一種選擇是保持Couchbase存儲桶並將端口設置爲112211.使用CouchbaseClient仍然是推薦的方法,但是如果您確實需要持久存儲桶,那麼這是一個選項。 –
我不知道該怎麼做約翰。 Couchbase存儲桶的端口已被設置爲112211(默認情況下)。我不知道如何設置我的配置文件來使用它... –
代碼片段如下。 app.config的設置方式與此類似,但您可以將它設置爲11211而不是8095. 'var cfg = new MemcachedClientConfiguration(); cfg.AddServer(「192.168.56.10」,11211); cfg.Protocol = MemcachedProtocol.Binary; var m =新的MemcachedClient(cfg);' –