Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memcached 如何使用memchached方法在多台服务器之间分发缓存?_Memcached_Enyim_Enyim.caching - Fatal编程技术网

Memcached 如何使用memchached方法在多台服务器之间分发缓存?

Memcached 如何使用memchached方法在多台服务器之间分发缓存?,memcached,enyim,enyim.caching,Memcached,Enyim,Enyim.caching,我正在尝试跨多个服务器分发缓存。我已经在2台Linux服务器上安装了Memcached。我正在使用.Net客户端库操作这些服务器上的缓存 它总是在配置的第一台服务器上存储值。我试图改变服务器和它存储的顺序,但只在列表中的第一个 我使用Putty检查服务器上是否存在对象 问题是: 如何在两台服务器上同时存储对象 如果要验证此对象是否存储在配置文件中的所有服务器上 如何从客户端库中执行此操作 下面是我的代码示例: static void Main(string[] args) { var

我正在尝试跨多个服务器分发缓存。我已经在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>

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