2015-05-18 4 views
1

Я собираюсь использовать CacheManager для моего проекта .net. Проблема в том, что я не могу найти примеры использования CacheManager.Memcached.CacheManager memcached configuration

Это, как я использую его:

public class GlobalCache 
{ 
    private static ICacheManager<object> memcachedClient { get; set; } 

    private static readonly object locker = new object(); 

    static GlobalCache() 
    { 
      if (memcachedClient == null) 
      { 
       lock (locker) 
       { 
        memcachedClient = CacheFactory.Build("memcached", settings => settings.WithMemcachedCacheHandle("memcached")); 
       } 
      } 
    } 
} 

Web.config:

<configuration> 
    <enyim.com> 
     <memcached protocol="Binary"> 
     <servers> 
      <add address="127.0.0.1" port="11211" /> 
     </servers> 
     </memcached> 
    </enyim.com> 

    <cache name="memcached"> 
     <handle name="memcached"/> 
    </cache> 
    </configuration> 

Ошибка у меня есть: http://c2n.me/3hSHqvR.png - неизвестный раздел в веб-конфигурации.

Если я удалю все эти разделы, у меня есть другая ошибка времени выполнения: http://c2n.me/3hSI745.png - ошибка конфигурации.

Я попытался использовать settings.WithSystemRuntimeCacheHandle() вместо settings.WithMemcachedCacheHandle(), и он отлично работает без каких-либо конфигурационных разделов. Но в этом случае мой кеш очищается каждый раз, когда я перезапускаю приложение. И я хочу - хранить кеш в хранилище memcached, без какого-либо отношения к моему приложению.

Итак, если у вас есть примеры или небольшое руководство по использованию memcached с CacheManager - я буду очень благодарен.

Заранее благодарен!

ответ

1

Что касается ошибки в разделе <cache name="memcached">, скорее всего, вы не определили какой-либо раздел внутри вашего файла конфигурации с этим именем. По крайней мере, нет такого раздела, как CacheManager или enyim.

Далее относительно ручки memcached. Имя дескриптора должно совпадать с разделом, чтобы CacheManager мог выбрать конфигурацию. По умолчанию enyim.com/memcached у вас есть. Таким образом, вы можете либо поставить enyim.com/memcached, либо default в качестве имени маркера кэша memcached.

Как

CacheFactory.Build("memcached", settings => settings 
    .WithMemcachedCacheHandle("enyim.com/memcached")); 

Позвольте мне знать, если это работает для вас.

Я знаю, что это еще не очень хорошо документировано. Я могу что-то добавить, когда найду какое-то время;)

+0

Спасибо, кучи! Он работает по мере необходимости. –

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