【问题标题】:CacheManager memcached configurationCacheManager 内存缓存配置
【发布时间】:2015-07-30 06:06:00
【问题描述】:

我将在我的 .net 项目中使用 CacheManager。问题是我找不到任何 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 - 网络配置中的未知部分。

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

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

因此,如果您有一些关于如何将 memcached 与 CacheManager 一起使用的示例或小教程 - 我将不胜感激。

提前致谢!

【问题讨论】:

    标签: c# memcached cachemanager


    【解决方案1】:

    关于 &lt;cache name="memcached"&gt; 部分的错误,很可能您没有在配置文件中使用该名称定义任何部分。 至少没有来自 CacheManager 和 enyim 的部分。

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

    喜欢

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

    让我知道这是否适合你。

    我知道这还没有很好的记录。有时间我可能会添加一些东西;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2022-07-03
      • 2010-12-08
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多