2012-06-10 3 views
0

Я пытаюсь, без везения вообще, сделать библиотеку EnyimMemcached с Couchbase Community server, которую я установил на свою локальную машину.Настройка EnyimMemcached для работы с Couchbase Server

Я использую в web.config

  <sectionGroup name="enyim.com"> 
    <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" /> 
    </sectionGroup> 
<enyim.com> 
    <memcached protocol="Binary"> 
     <servers> 
     <add address="localhost" port="8091" /> 
     </servers> 
     <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> 
     <authentication type="Enyim.Caching.Memcached.PlainTextAuthenticator, Enyim.Caching" userName="Administrator" password="1234" /> 
    </memcached> 
    </enyim.com> 

, но я не получаю ни одного хита на локальном сервере и

var result = _client.Store(StoreMode.Add, key, val); 

продолжает возвращаться false.

Есть ли какие-либо изменения, с которыми вы работаете, и может показать мне, как правильно настроить его правильно?

+0

Вы используете CouchbaseClient? - http://www.couchbase.com/develop/net/current. –

+0

Нет, я хотел использовать «Enyim.Caching.Memcached» вместо этого, так как это то, что у меня есть в облаке, и я хотел по-прежнему работать на своей локальной машине, но текущий сервер Memcached не разрешает подключения за пределами домена Amazon EC2. – balexandre

+0

CouchbaseClient - это подкласс MemcachedClient в Enyim.Caching, поэтому клиентский уровень Couchbase действительно просто заботится о конкретной настройке Couchbase. Все ваши вызовы кэширования будут фактически выполняться с помощью кода Enyim ... –

ответ

1

Моя конфигурация:

<sectionGroup name="enyim.com"> 
     <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" /> 
</sectionGroup> 
... 
<enyim.com> 
    <memcached> 
    <servers> 
     <add address="127.0.0.1" port="10001" /> 
    </servers> 
    <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:10:00" deadTimeout="00:02:00" /> 
    </memcached> 
</enyim.com> 

Базовая оболочка для System.Web.Caching.Cache

public class MemcachedCache : ICache 
{ 
     private MemcachedClient cache; 

     private TimeSpan _timeSpan = new TimeSpan(
      Settings.Default.DefaultCacheDuration_Days, 
      Settings.Default.DefaultCacheDuration_Hours, 
      Settings.Default.DefaultCacheDuration_Minutes, 0); 

     public MemcachedCache() 
     { 
      cache = new MemcachedClient(); 
     } 
     /// <summary> 
     /// Gets a cache object based on the cache_key. 
     /// </summary> 
     /// <param name="cache_key"></param> 
     /// <returns></returns> 
     public object Get(string cache_key) 
     { 
      return cache.Get(cache_key); 
     } 
     /// <summary> 
     /// Override to allow expiration at a specific date/time and a priority level. 
     /// </summary> 
     /// <param name="cache_key"></param> 
     /// <param name="cache_object"></param> 
     /// <param name="expiration"></param> 
     /// <param name="priority"></param> 
     public void Set(string cache_key, object cache_object, DateTime expiration, CacheItemPriority priority) 
     { 
      cache.Store(StoreMode.Set, cache_key, cache_object, expiration); 
     } 

     /// <summary> 
     /// Override to cache for a specified amount of time and a priority level. 
     /// </summary> 
     /// <param name="cache_key"></param> 
     /// <param name="cache_object"></param> 
     /// <param name="expiration"></param> 
     /// <param name="priority"></param> 
     public void Set(string cache_key, object cache_object, TimeSpan expiration, CacheItemPriority priority) 
     { 
      cache.Store(StoreMode.Set, cache_key, cache_object, expiration); 
     } 
} 

Для вашей конфигурации также проверить, если все порты открыты (8091, 8092). Если вы используете отдельную конфигурацию портов, проверьте также, открыта ли она.

Смежные вопросы