memcached 最大能存储?如何解决过期数据?item 批量导入导出呢?

文章解释了Memcached中单个item大小限制为1MB的原因,涉及内存分配机制。还讨论了批量导入导出的适用场景、过期数据处理以及注意事项,强调了非阻塞服务器特性与性能优化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1MB。如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中。

为什么单个 item 的大小被限制在 1M byte 之内?

啊…这是一个大家经常问的问题!

简单的回答:因为内存分配器的算法就是这样的。

详细的回答:Memcached 的内存存储引擎(引擎将来可插拔…),使用 slabs 来管理内存。内存被分成大小不等的 slabs chunks(先分成大小相等的 slabs,然后每个 slab 被分成大小相等 chunks,不同 slab 的 chunk 大小是不相等的)。chunk的大小依次从一个最小数开始,按某个因子增长,直到达到最大的可能值。

因此,批量导出导入数据并不像您想象中的那么有用。不过在一个场景倒是很有用。如果您有大量的从不变化的数据,并且希望缓存很快热(warm)起来,批量导入缓存数据是很有帮助的。虽然这个场景并不典型,但却经常发生,因此我们会考虑在将来实现批量导出导入的功能。

如果一个 memcached 节点 down 了让您很痛苦,那么您还会陷入其他很多麻烦。

您的系统太脆弱了。您需要做一些优化工作。比如处理”惊群”问题(比如memcached 节点都失效了,反复的查询让您的数据库不堪重负…这个问题在 FAQ的其他提到过),或者优化不好的查询。记住,Memcached 并不是您逃避优化查询的借口。

您不应该这样做!Memcached 是一个非阻塞的服务器。任何可能导致memcached 暂停或瞬时拒绝服务的操作都应该值得深思熟虑。向 memcached中批量导入数据往往不是您真正想要的!想象看,如果缓存数据在导出导入之间发生了变化,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纵然间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值