memcached - 您如何解决 memcached 的键/值限制?

标签 memcached

Memcached键的长度限制(250?)和值(大约 1MB),以及一些(据我所知)键的字符限制不是很明确。在您看来,解决这些问题的最佳方法是什么?我使用 Perl API Cache::Memcached。

如果原始值太大(“parts:”),我目前所做的是为主键的值存储一个特殊的字符串,在这种情况下,我存储 部分的键名为 1+

, 2+
等等。这在某些情况下似乎“OK”(但很乱),但对其他人来说不太好,而且它的内在问题是某些部分可能随时丢失(因此浪费了空间)保留其他人,浪费时间阅读它们)。

至于 key 限制,人们可能可以实现散列并将完整 key (以解决冲突)存储在值中,但我还不需要这样做。

有没有人想出更优雅的方法,甚至是透明处理任意数据大小(和键值)的 Perl API?有没有人黑过 memcached 服务器来支持任意键/值?

最佳答案

服务器已经允许您指定所需的任何大小:

-I            Override the size of each slab page. Adjusts max item size
              (default: 1mb, min: 1k, max: 128m)

然而,大多数时候,当人们想要缓存更大的对象时,他们做错了。您真的需要在一个缓存键中存储这么多数据吗?未压缩?

如果您有足够大的任务,那么与实际传输数据所需的时间相比,低延迟访问的好处相形见绌。或者您发现将所有内容都放在同一个键中意味着您的前端最终不得不做很多工作来反序列化他们想要的一些数据。

这取决于您的需求,如果不了解更多您在做什么,我无法告诉您什么最适合您。如果您确实需要大于 1MB 的内容,这就是我们添加 -I 的原因。 , 尽管。

关于memcached - 您如何解决 memcached 的键/值限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125806/

相关文章:

java - spring-boot-devtools 在从缓存获取时导致 ClassCastException。

c# - 支持流式传输的 .NET 缓存提供程序?

c - Memcached ruby​​gem + Rlibmemcached 参数错误与 memcache_mget()

php - 如何使用 php 检查 memcached 的容量

architecture - 如何实现缓存服务器?

python - Django 原子增加初始值

php - 警告:Memcached::getMulti():无法反序列化值,没有 igbinary 支持

php - 为什么我的 GAE 上的 WordPress 网站没有被缓存?

Memcached 与 Spring Boot

mongodb - 使用 MongoDB 时是否推荐使用 Memcache?