memcached密钥可以包含空格吗?

时间:2011-04-29 00:59:52

标签: php memcached

我似乎遇到了带空格的memcached密钥问题,但我无法准确指出是什么。

5 个答案:

答案 0 :(得分:41)

更明确的答案(由Dustin提及,但没有引用):

  

     

memcached存储的数据是在密钥的帮助下识别的。关键   是一个文本字符串,应该唯一标识客户端的数据   有兴趣存储和检索它的人。目前   密钥的长度限制设置为250个字符(当然,通常是   客户不需要使用这么长的密钥);关键不能包括   控制字符或空格。

来源:protocol.txtSpecific Version

答案 1 :(得分:20)

没有。 Memcached密钥不能包含空格。

答案 2 :(得分:2)

Memcached客户端似乎不会验证密钥以支持性能。

我通常做的是创建一个名为while ((line = r.readLine()) != null) { links.add(line); sd++; } 的方法,并将返回的结果传递给memcached客户端的createWellFormedKey($key)set()方法。

除非base64版本超过250个字符,否则我不使用md5和sha1哈希。这是因为md5和sha1在操作性能方面更为昂贵。

示例PHP代码如下所示:

get()

答案 3 :(得分:1)

目前我正在玩PHP的memcached和问题描述恕我直言可以通过使用哈希算法,如md5和sha1(或任何其他)轻松解决。

我正在使用md5-hash,sha1-hash和sha256 +给出的密钥长度的组合。 显然这个方法可以简化为两个哈希方法+密钥长度,这样就可以轻松避免使用不应该在密钥中的空格或其他字符。

在我看来,哈希竞争被避免了,因为两个哈希算法碰撞的几率几乎为0.通过额外使用密钥中的密钥长度,冲突问题为0。

答案 4 :(得分:0)

使用memcached 二进制协议的应用程序可以使用包含空格的键,但仍有250字节的长度限制。

相关问题