Java 客户端是否需要担心多个memcache服务器?

Java 客户端是否需要担心多个memcache服务器?,java,windows,memcached,spymemcached,Java,Windows,Memcached,Spymemcached,问题:- java客户端需要担心多个服务器吗 意思是:- 我在memcached client中提供了两台服务器,但当我从缓存中设置或获取密钥时,我是否需要向它提供任何与服务器相关的信息,或者memcache本身负责它 我的知识:- Memcache本身由于具有一致的散列而非常小心 但是SpymeCached 2.8.0是否提供了一致的散列 Memcached服务器是池化服务器。这意味着您定义了一个服务器池(一个列表),当Java客户机尝试写入时,它会写入该池 客户机的任务是决定池中的哪个服务器

问题:- java客户端需要担心多个服务器吗

意思是:- 我在memcached client中提供了两台服务器,但当我从缓存中设置或获取密钥时,我是否需要向它提供任何与服务器相关的信息,或者memcache本身负责它

我的知识:- Memcache本身由于具有一致的散列而非常小心


但是SpymeCached 2.8.0是否提供了一致的散列

Memcached服务器是池化服务器。这意味着您定义了一个服务器池(一个列表),当Java客户机尝试写入时,它会写入该池

客户机的任务是决定池中的哪个服务器将接收和存储该值,以及如何从该池中检索该值

基本上,这允许您从一个Memcached服务器(可能在同一台机器上)开始,如果推到紧要关头,您可以在不涉及应用程序代码的情况下向池中添加几十个服务器

由于客户端负责跨服务器池分发数据(客户端必须选择正确的memcached服务器来存储/获取数据),因此分发算法很少

其中一个最简单的例子是。此算法根据池中memcached服务器的数量分配密钥。如果池中的服务器数量发生变化,客户端将无法找到存储的数据,将出现缓存未命中。在这种情况下,最好使用

最流行的java memcached客户端和支持一致哈希


在某些用例中,可以使用或通过AOP(拦截器)将缓存添加到spring应用程序中,而不是直接使用memcached客户端。Spring Cache目前不支持memcached,但在快照构建和即将发布的3.0.0版本中提供了此类功能。

memcached服务器将自行存储和检索密钥/值。 在使用散列进行存储时,生成密钥并存储它。 在重新检索给定密钥并查找该密钥存储在哪个服务器上,然后获取该密钥时,这将需要一些时间

相反,有一种方法可用于存储和检索

创建一个HashMap,并以服务器地址作为值存储密钥。现在,如果下一次需要获取相同的密钥,那么您将直接从HashMap获取服务器地址,并且只需要从那里获取值。因此,您可以节省MemCahce服务器的搜索时间


希望您理解我的意思。

我们是在谈论Memcache还是Memcached?这意味着我们只需设置一个密钥并将其取回,我们不需要担心存储它的服务器。。。我说得对,没错!创建MemcachedClient实例时,客户端对象专用于一个池,并管理与池中所有服务器的通信。您可能希望/需要使用多个池,在这种情况下,您需要MemcachedClient对象的单独实例。因为我们正在讨论这个主题,Memcached没有冗余,多个服务器意味着您可以存储池中所有服务器上所有可分配空间总和的数据。发生故障时没有备份。有一些基于Memcached的商业解决方案实现了冗余以及诸如Redis之类的替代方案。@Mihai。。。SpymeMached使用一致散列还是模散列???@Hellexx抱歉,我不是Java开发人员,我也没有使用SpymeMached,所以idk。