2015-05-18 49 views
1

我打算为我的.net项目使用CacheManager。问题是我找不到任何CacheManager.Memcached用法的例子。CacheManager memcached配置

这是我如何使用它:

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 - 在Web配置未知部分。

如果我删除所有这些部分,我有另一个运行时错误: http://c2n.me/3hSI745.png - 配置错误。

我试图使用settings.WithSystemRuntimeCacheHandle()而不是settings.WithMemcachedCacheHandle(),它没有任何配置部分工作正常。但在这种情况下,每次重新启动我的应用程序时,我的缓存都会被清除。我想要的是 - 将缓存存储在memcached存储中,与我的应用程序没有任何关系。

所以,如果你有一些例子或如何使用CacheManager的memcached小教程 - 我将不胜感激。

在此先感谢!

回答

1

关于<cache name="memcached">部分的错误,很可能您尚未在配置文件中使用该名称定义任何部分。至少没有像CacheManager或enyim那样的部分。

然后关于memcached句柄。句柄的名称必须与该部分相匹配,以便CacheManager可以获取配置。 缺省值为enyim.com/memcached。因此,您可以将enyim.com/memcacheddefault作为memcached缓存句柄的名称。

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

让我知道这对你的作品。

我知道这还没有很好的记录,但。我可能会增加一些东西,当我找到一些时间;)

+0

谢谢堆!它根据需要工作。 –