2012-11-05 36 views
1

我试图在多个服务器之间分配缓存。我在2台Linux服务器上安装了Memcached。我正在使用.Net客户端库来处理这些服务器上的缓存。如何在多个服务器之间使用memchached方法分配缓存?

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

我使用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> 

回答

2

我不认为这是可能的.NET客户端要做到这一点,因为这是不如何的Memcached应该工作。客户端在内部只会将每个密钥散列到一台服务器。如果该服务器关闭,那么客户端在对未来的密钥进行散列处理时会考虑这一点。解决这个问题的方法之一是为每个服务器分别设置一组。这将要求您创建两个客户端,一个连接到每个服务器,并发送请求两次。如果.NET客户端提供异步集,那么您可以仅在两个集合操作中最长的延迟时间内执行此操作。

相关问题