如何在memcached中计算条目大小

时间:2018-01-30 22:13:54

标签: memcached

我知道memcached中的条目默认长度限制为1M。并且可以通过在启动守护程序时传递-I来配置此值。当我编写客户端时,我想保护我的用户不要传入太大而无法容纳的值。我运行了一些测试,发现我的机器上的item_size_max和key_length + value_lenght之间有一个71 bytes边距。
我默认为STAT item_size_max 1048576
我投入byte[] key = new byte[250]; byte[] value = new byte[1048255];成功,1048576-250-1048255 = 71
我输入byte[] key = new byte[250]; byte[] value = new byte[1048256];失败了。
尝试了多个总缓存大小,多个最大项目大小限制和多个密钥长度。在我的密钥长度和值之间以及item_size_max之间总是有71个字节的余量。

我想知道如何计算出可以放入的最长值,而不是条目的长度。

干杯!提前谢谢。

1 个答案:

答案 0 :(得分:0)

得到了github / memcached问题的答复 https://github.com/memcached/memcached/issues/334

简而言之

  • 构建了一个“./sizes”实用程序,它描述了各种数据结构的开销。
  • 一种简单的方法可能就是将max size设置为1M - 最大密钥长度(500)的2倍。