【问题标题】:Memcached AWS Cluster not keeping the key in the same nodeMemcached AWS 集群未将密钥保存在同一节点中
【发布时间】:2016-09-07 10:44:15
【问题描述】:

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

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

memcached集群有没有配置参数强制它不改变key的引用节点?

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

【问题讨论】:

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


    【解决方案1】:

    应该是这样的。

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

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

    django documentation 说了类似的话。

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

    换句话说,您不能直接从集群中的任何给定节点请求数据。您必须让 django 的缓存 api 为您弄清楚如何检索数据。

    redis 的行为是相反的。写入集群后,您可以查询集群中的任何节点以获取数据,因为它将被复制到所有节点。在内存缓存中,它是分片的。

    【讨论】:

    • 但我希望 memcached 保持相同密钥的一致性..即使它在不同节点上分片相同密钥的信息..它是否应该给我一个唯一的密钥而不是保留不同节点中相同键的不同引用?关于Redis:那么redis集群只是复制数据,不扩展缓存的大小写建议?
    • 没错。如果你有 10 个 1GB 的 redis 缓存集群在一起,你的总存储容量是 1GB。如果您有 10 个 memcached 缓存聚集在一起,则您的存储空间为 10GB - 不同的缓存持有不同的键。您不应该直接转到任何一个缓存,而是应该让顶级 api 为您决定要转到哪个缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2013-09-27
    相关资源
    最近更新 更多