Memcached AWS Cluster未将密钥保留在同一节点

时间:2016-05-11 20:28:01

标签: python django amazon-web-services memcached amazon-elasticache

我在AWS的Elasticache工具中创建了一个memcached集群。

我的每次调用程序都会在缓存中设置一些数据,每次调用服务器时都会更新数据。然而,在使用群集进行测试时,我发现它似乎正在更改密钥所在的节点或正在删除它,因此当它更改节点/或删除密钥时,我丢失了以前的信息。仅限于我调用所有集群的一个端点,它是否应该保持密钥在集群上的一致性,而不是删除密钥的内容或在其他地方重新启动密钥?

memcached群集是否有任何配置参数强制它不更改密钥的引用节点?

现在我使用AWS文件default.memcached1.4的默认配置参数。我查看了http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/ParameterGroups.Memcached.html的配置参数,我没有找到任何信息,提供有关如何解决的提示这个问题。 (Pd。当我直接将我的程序指向特定节点时,一切正常)

1 个答案:

答案 0 :(得分:2)

这就是它应该的方式。

  

下图说明了典型的Memcached和典型   Redis集群。 Memcached群集包含1到20个节点   您可以对数据进行水平分区。 Redis的

来自http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.html

django documentation说了类似的话。

  

Memcached的一个优秀功能是它能够共享缓存   在多个服务器上。这意味着您可以运行Memcached守护程序   多台机器,程序会将机器组视为   单个缓存,无需在每个缓存上复制缓存值   机

换句话说,您无法直接从群集中的任何给定节点请求数据。你必须让django的缓存api为你找出如何检索数据。

使用redis,行为恰恰相反。写入群集后,您可以在群集中查询数据中的任何节点,因为它将全部复制到它们。在memcache中,它是分片的。