客户端是否需要担心多个内存缓存服务器?

Ani*_*mar 3 java windows memcached spymemcached

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

含义:- 我在 memcached 客户端中提供了两个服务器,但是当我设置或从缓存中获取密钥时,我是否需要向它提供任何与服务器相关的信息或 memcache 本身会处理它?

我的知识:- 由于哈希一致,Memcache 本身会很小心。

但是 spymemcached 2.8.0 是否提供一致的散列???

Mih*_*ncu 5

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

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

基本上,这允许您从一台 Memcached 服务器(可能在同一台机器上)开始,如果推送迫在眉睫,您可以在不涉及应用程序代码的情况下向池中添加更多服务器。

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

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

最流行的 java memcached 客户端spymemachedxmemcached支持一致性哈希。

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