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