【问题标题】:Storing large objects in Memcached在 Memcached 中存储大对象
【发布时间】:2018-12-09 04:39:51
【问题描述】:

我在 Memcached 中存储了一个大小为 7-10MB 的对象,并在放置该对象之后尝试检索它。在这种情况下,我会遇到缓存未命中。知道为什么吗?此解决方案适用于较小的对象尺寸。

背景信息:

我正在使用 Memcached 存储一组大小约为 7-10 MB 的大型对象。出于某种原因,我无法将此对象拆分为多个较小的键。我希望缓存是冗余和温暖的,因此,我使用了一个稍微复杂的缓存放置过程,如下所述:

keySet = makeRedundantKeys(key) // Appends a unique num to the key
putAsync(keys in keyset)
while(!timeout || countNonNullKeys > desiredQuorumOfKeys) {
    countNonNullKeys = getSyncKeys(key in keySet)
    sleep(backoffTime);
}

我遇到了很多失败,getSyncKeys 需要大约 700 毫秒才能获得一个密钥。知道为什么会发生这种情况吗?这仅对大型物体观察到。

【问题讨论】:

    标签: caching memcached spymemcached


    【解决方案1】:

    默认情况下,memcached 最多只能存储 1MB 的对象:

    许多人要求 memcached 能够存储大于 1MB 的项目,虽然通常不建议这样做,但现在命令行支持。

    你可以use the -I option to increase this

    在您的情况下,您需要将 -I 设置为 10m。您正在使用 AWS,因此如果您正在运行自己的 memcached 服务器,您可以自己执行此操作,但如果您使用的是 AWS Elasticache,则需要创建一个参数组,更改 @987654324 @ 从 1MB (1048576) 到 10MB (10485760) 并将其应用于需要重启的 Elasticache 集群。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多