如何在 memcached 中计算条目大小
How is the entry size being calculated in memcached
我知道 memcached 中的条目默认有长度限制为 1M。并且这个值可以通过在启动守护进程时传递 -I
来配置。当我编写我的客户端时,我想保护我的用户免于传递太大而无法容纳的值。我 运行 进行了一些测试,发现我的机器在 item_size_max 和 key_length+value_lenght.
我默认有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 个字节的边距。
我想知道如何找出可以输入的最长值而不是条目的长度。
干杯!提前致谢。
收到 github/memcached 个问题的回复
https://github.com/memcached/memcached/issues/334
简而言之
- 构建了一个“./sizes”实用程序,它描述了各种数据结构的开销。
- 一种简单的方法可能是将最大大小设置为 1M - 最大密钥长度 (500) 的 2 倍。
我知道 memcached 中的条目默认有长度限制为 1M。并且这个值可以通过在启动守护进程时传递 -I
来配置。当我编写我的客户端时,我想保护我的用户免于传递太大而无法容纳的值。我 运行 进行了一些测试,发现我的机器在 item_size_max 和 key_length+value_lenght.
我默认有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 个字节的边距。
我想知道如何找出可以输入的最长值而不是条目的长度。
干杯!提前致谢。
收到 github/memcached 个问题的回复
https://github.com/memcached/memcached/issues/334
简而言之
- 构建了一个“./sizes”实用程序,它描述了各种数据结构的开销。
- 一种简单的方法可能是将最大大小设置为 1M - 最大密钥长度 (500) 的 2 倍。