Encoding 如何使用base64编码减少memcached密钥大小?

Encoding 如何使用base64编码减少memcached密钥大小?,encoding,key,memcached,base64,libmemcached,Encoding,Key,Memcached,Base64,Libmemcached,你可以阅读: 64位UID是识别用户的聪明方法,但打印时很糟糕 出来18446744073709551616. 20个字符!使用base64编码,或 即使只是十六进制,你也可以把它减少很多 大宗报价 但据我所知,如果使用Base64编码,18446744073709551616将导致更大的字符串。我知道我遗漏了一些东西,因为那些memecached的人很聪明,他们在文档中不止一次提到使用Base64编码可以在将密钥存储到memcahed之前对其进行改进。这是怎么回事?不要像字符串一样威胁UID,

你可以阅读:

64位UID是识别用户的聪明方法,但打印时很糟糕 出来18446744073709551616. 20个字符!使用base64编码,或 即使只是十六进制,你也可以把它减少很多 大宗报价


但据我所知,如果使用Base64编码,18446744073709551616将导致更大的字符串。我知道我遗漏了一些东西,因为那些memecached的人很聪明,他们在文档中不止一次提到使用Base64编码可以在将密钥存储到memcahed之前对其进行改进。这是怎么回事?

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

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

64位作为2、0或1的位字母表是64个字符 64位为10的十进制字母,0-9为20个字符 64位为16的十六进制字母表,0-F为16个字符
等等。

谢谢您的回复。然后他们讨论的是将数字的二进制表示形式输入到编码函数的输入中,得到一个比十进制表示形式的字符串短的字符串?这是唯一有意义的事情,是的。再次感谢。我问了另一个关于如何在PHP中实现这一点的问题,因为标准PHP函数似乎不适合。显然,这里的问题是避免memcached键的二进制表示,因此我们可以使用ascii协议。