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