客户需要担心多个memcache服务器吗?

问题: – Java客户端需要担心多个服务器吗?

含义: – 我已经在memcached客户端中提供了两台服务器,但是当我设置或从caching中获取密钥时,是否需要提供任何服务器相关的信息或memcache本身照顾它?

我的知识: – Memcache本身由于一致的哈希处理。

spymemcached 2.8.0提供一致的哈希?

Solutions Collecting From Web of "客户需要担心多个memcache服务器吗?"

Memcached服务器正在共享服务器。 这意味着您定义了一个服务器池(一个列表),并且当Java客户端尝试写入数据时写入池。

客户端的工作是确定池中的哪个服务器将接收并存储该值,以及如何从该池中检索值。

基本上,这可以让你从一台Memcached服务器(可能在同一台机器上)开始,如果推动推进,你可以添加几十个服务器到池中,而不必接触应用程序代码。

由于客户端负责在服务器池中分配数据(客户端必须选择正确的memcached服务器来存储/获取数据),因此几乎没有分配算法。

其中最简单的就是modula 。 此算法根据池中的memcached服务器数量分配密钥。 如果池中的服务器数量发生变化,客户端将无法查找存储的数据,则会导致缓存未命中。 在这种情况下,最好使用一致的哈希 。

最受欢迎的Java memcached客户端spymemached和xmemcached支持一致的哈希。

在一些使用情况中,不是直接使用memcached客户端,而是使用simple-spring-memcached或Spring 3.1 Cache Abstraction,通过AOP(拦截器)将缓存添加到Spring应用程序中。 Spring Cache目前不支持memcached,但simple-spring-memcached在快照构建和即将发布的3.0.0版本中提供了这种集成 。

MemCached服务器将自行管理存储和检索密钥/值。 使用散列存储时会生成密钥并存储它。 当再次检索哈希给定的密钥,并找到它已被存储在哪个服务器上,然后获取它,这将需要一些时间。

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

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

希望你明白我的意思。