我似乎遇到了带空格的memcached密钥问题,但我无法准确指出是什么。
答案 0 :(得分:41)
更明确的答案(由Dustin提及,但没有引用):
键
memcached存储的数据是在密钥的帮助下识别的。关键 是一个文本字符串,应该唯一标识客户端的数据 有兴趣存储和检索它的人。目前 密钥的长度限制设置为250个字符(当然,通常是 客户不需要使用这么长的密钥);关键不能包括 控制字符或空格。
答案 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字节的长度限制。