【问题标题】:How can I reduce memcached key size using base64 encoding?如何使用 base64 编码减少 memcached 密钥大小?
【发布时间】:2014-06-04 12:50:09
【问题描述】:

Here你可以阅读:

64 位 UID 是识别用户的巧妙方法,但在打印时很糟糕 出去。 18446744073709551616。20个字符! 使用 base64 编码,或 即使只是十六进制,你可以减少很多 块引用

但据我所知,如果使用 Base64 编码,18446744073709551616 会产生更大的字符串。我知道我遗漏了一些东西,因为那些 memecached 的人很聪明,并且在文档中他们不止一次提到使用 Base64 编码可以用于改进密钥,然后再将其存储到 memcahed 中。怎么样?

【问题讨论】:

    标签: encoding key memcached base64 libmemcached


    【解决方案1】:

    您所看到的基本上是 64 位的 十进制 表示。他们可能在谈论将底层位直接编码为 Base64 或十六进制,而不是对位的十进制表示进行编码。他们基本上只是在谈论字母大小。字母越大,字符串越短:

    64 位(字母为 2、01)为 64 个字符
    64 位十进制(字母为 10,0 - 9)为 20 个字符
    64 位十六进制(16 位字母,0 - F)为 16 个字符
    等等……

    【讨论】:

    • 感谢您的回复。那么他们所说的就是将数字的二进制表示形式提供给Base64 编码函数的输入,得到比其十进制表示形式的字符串更短的字符串?
    • 这是唯一有意义的事情,是的。
    • 再次感谢。我问另一个问题here 与如何在 PHP 中执行此操作有关,因为标准 PHP 函数似乎不适合。
    【解决方案2】:

    不要像字符串一样威胁 UID,而是使用 64 位数字表示。它恰好需要 64 位或 8 个字节。使用十六进制编码 8 个字节将产生类似“FF1122EE44556677”的字符串 - 16 个字节。使用 base64 编码,您将获得更短的字符串。

    【讨论】:

    • 很明显,但是这里的问题是避免memcached key的二进制表示,所以我们可以使用ascii协议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2017-06-09
    • 2019-07-19
    • 2014-07-15
    • 2021-08-29
    相关资源
    最近更新 更多