Caching 在Memcached中存储大型对象

Caching 在Memcached中存储大型对象,caching,memcached,spymemcached,Caching,Memcached,Spymemcached,我将一个大小为7-10MB的对象存储在Memcached中,并在放置该对象之后尝试检索它。在这种情况下,我会发现缓存未命中。知道为什么吗?此解决方案适用于较小的对象大小 背景信息: 我使用Memcached来存储一组大约7-10MB大小的大型对象。出于某种原因,我不可能将此对象拆分为多个较小的关键点。我希望缓存是冗余和温暖的,因此,我使用了一个稍微复杂的缓存放置过程,如下所述: keySet = makeRedundantKeys(key) // Appends a unique num to

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

背景信息:

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

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毫秒才能获得一个密钥。知道为什么会这样吗?这仅适用于大型对象。较小的对象默认情况下,memcached仅存储最大1MB的对象:

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

你可以

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