在Redis协议规范中,它提到:
“状态回复不是二进制安全的,不能包含换行符。”字符串/文件是二进制安全的意味着什么?为什么redis中的状态回复不能是二进制安全的?
发布于 2013-07-18 05:21:32
二进制安全字符串解析器在字符串中的单个字符中考虑所有可能的值0 - 255,该字符串可能不是以null结尾的(它的长度也是已知的)。如果字符串解析器不是二进制安全的,那么它需要一个以null结尾的字符串(字符串末尾的二进制0 )。
通常,字符串解析器不是二进制安全的。许多解析都期望正常的可打印字符和字符串末尾的0。如果这种字符串的末尾没有0,则很容易出现分段错误。
二进制安全解析器可能正在解析任意数据(可能是文本或其他数据)。
编辑:
“字符串/文件是二进制安全的意味着什么?”
“为什么redis中的状态回复不能是二进制安全的?”
\r\n的第一个实例结束。这就是解析器计算字符串长度的方法。因此,如果它在回复结束前找到一个\r\n,它将停止解析并忽略之后的所有内容。除非状态回复需要发送二进制数据,否则它们不需要是二进制安全的。
https://stackoverflow.com/questions/17710326
复制相似问题