首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Memcached中存储大型对象

在Memcached中存储大型对象
EN

Stack Overflow用户
提问于 2018-06-30 01:19:27
回答 1查看 2.4K关注 0票数 1

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

背景信息:

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

代码语言:javascript
复制
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毫秒才能得到一个密钥。知道为什么会发生这种事吗?只对大型物体观察到这一点。小于1MB的较小对象可以很好地工作,并在~2ms pAvg中返回数据。这些都是很好的m4.2×大型EC2主机,具有高的网络性能。另外,我的TCP重传段图的峰值高达1500/min,这似乎有点可疑。

EN

回答 1

Stack Overflow用户

发布于 2018-09-10 11:53:03

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

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

你可以使用-I选项可以增加

在您的情况下,您需要将-I设置为10m。您正在使用AWS,所以如果您正在运行您自己的memcached服务器,您将能够自己运行,但是如果您使用的是AWS,则需要创建一个参数组,将max_item_size从1MB (1048576)更改为10 1MB (10485760),并将其应用到需要重新引导的Elasticache集群中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51110977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档