我在AWS的Elasticache工具中创建了一个memcached集群。
我的每次调用程序都会在缓存中设置一些数据,每次调用服务器时都会更新数据。然而,在使用群集进行测试时,我发现它似乎正在更改密钥所在的节点或正在删除它,因此当它更改节点/或删除密钥时,我丢失了以前的信息。仅限于我调用所有集群的一个端点,它是否应该保持密钥在集群上的一致性,而不是删除密钥的内容或在其他地方重新启动密钥?
memcached群集是否有任何配置参数强制它不更改密钥的引用节点?
现在我使用AWS文件default.memcached1.4的默认配置参数。我查看了http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/ParameterGroups.Memcached.html的配置参数,我没有找到任何信息,提供有关如何解决的提示这个问题。 (Pd。当我直接将我的程序指向特定节点时,一切正常)
答案 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中,它是分片的。