2014-01-10 69 views
1

我已經在Amazon ElastiCache上創建了緩存集羣。它給了我一個終點地址。 現在我想將數據存儲在Amazon ElastiCache中。爲此,我正在使用enyim memcached客戶端。如何在c#中使用enyim memcached客戶端和亞馬遜彈性緩存#

服務器給出錯誤;

爲Enyim.Caching.Memcached.ServerPool類型初始拋出錯誤

我的配置是這樣的;

<enyim.com> 
    <memcached> 
     <servers> 
     <!-- put your own server(s) here--> 
     <add address="<MyendPointAddress" port="11211" /> 
     </servers> 
     <socketPool minPoolSize="10" maxPoolSize="100" 
     connectionTimeout="00:01:10" deadTimeout="00:05:00" /> 
    </memcached> 
    </enyim.com> 

在C#中我寫了類似這樣的東西;

using (MemcachedClient client = new MemcachedClient()) 
      { 
       client.Store(Enyim.Caching.Memcached.StoreMode.Add, key, value); 
       var l = client.Get(key); 
      } 

當我使用本地主機時,代碼不會拋出任何錯誤,但不會存儲任何內容。

編輯: 現在我已經轉移到BeIT memcached客戶端。它運行良好,但是返回null作爲Get()請求的輸出。

回答

1

不使用Confiugration節點,ElastiCache設置了一個配置終點,您可以使用它們具有的Java或PHP庫或自行獲取節點。他們記錄了大部分如何在開發人員文檔上使用此配置節點。

這樣做的好處是,無論何時添加或刪除節點,都不必重新配置應用程序,只需詢問memcached配置節點即可。

如果您不想這樣做,那麼只需進入節點並將它們添加到您的配置中,就如同您只有一堆Memcached服務器一樣。

0

自從這個問題已經有一段時間了,但如果其他人面臨同樣的問題。

enyim.memcached配置需要像這樣;

<configSections> 
    <section name="clusterclient" type="Amazon.ElastiCacheCluster.ClusterConfigSettings, Amazon.ElastiCacheCluster" />  
</configSections> 
<clusterclient> 
    <endpoint hostname="[Add your ElastiCache cluster endpoint here]" port="11211" /> 
    <node nodeTries="5" nodeDelay="1000" /> 
    <poller intervalDelay="60000" /> 
</clusterclient> 

然後,您可以通過C#代碼訪問Elasticache;

new MemcachedClient(new ElastiCacheClusterConfig()).Store(key, value, expireAt) 
new MemcachedClient(new ElastiCacheClusterConfig()).Get(key) 

這裏是一個完整的例子; http://www.omidmufeed.com/how-to-use-elasticache-memcached-or-runtime-caching-in-c/

+0

Elasticache羣集不能從外部AWS訪問; http://stackoverflow.com/questions/22594837/using-elasticache-through-c-sharp – omufeed