【问题标题】:How to distribute cache using memchached approach between multiple servers?如何在多个服务器之间使用 memcached 方法进行分布式缓存?
【发布时间】:2012-10-25 12:29:21
【问题描述】:

我正在尝试跨多个服务器分配缓存。我已经在 2 个 Linux 服务器上安装了 Memcached。我正在使用 .Net 客户端库来操作这些服务器上的缓存。

它总是在配置的第一台服务器上存储价值。我试图改变服务器的顺序,它只存储在列表中的第一个。

我使用 Putty 来检查服务器上是否存在对象。

问题是:

如何同时在两台服务器上存储对象?

如果我想通过配置文件验证这个对象是否存储在所有服务器上

我如何从客户端库中做到这一点?

这是我的代码示例:

static void Main(string[] args)
{ 
     var mc = new MemcachedClient();
     mc.FlushAll();
     mc.Store(StoreMode.Add, "key1", "some information");            
     Console.WriteLine(mc.Get("key1"));
}

和配置

<enyim.com>
    <memcached>
      <servers>
        <add address="20.23.24.105" port="11211"/>
        <add address="20.23.24.106" port="11211"/>
      </servers>
      <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:10:00" deadTimeout="00:02:00"/>
    </memcached>
  </enyim.com>

【问题讨论】:

    标签: memcached enyim enyim.caching


    【解决方案1】:

    我认为使用 .NET 客户端不可能做到这一点,因为这不是 Memcached 应该如何工作的。在内部,客户端会将每个密钥散列到仅一个服务器。如果该服务器出现故障,客户端将在对未来的密钥进行散列时考虑到这一点。解决此问题的一种方法是为每个服务器单独设置一组。这将需要您创建两个客户端,一个连接到每个服务器,然后发送两次请求。如果 .NET 客户端提供异步集合,那么您可以这样做,延迟时间只要两个集合操作中最长的一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2013-08-18
      相关资源
      最近更新 更多