什么是二进制安全字符串?它只是在字符串本身中附加长度的字符串吗?为什么它们被称为二进制安全?不确定是否应该标记redis,但在阅读redis文档时看到了这个术语。
二进制安全字符串是指可以包含任何字符(字节)的字符串。
例如,许多编程语言使用0x00字符作为字符串结尾标记,因此从这个意义上说,二进制安全字符串可以由这些字符组成。
二进制安全字符串不对其长度或终止字符做任何假设。例如,在Redis中(因为您在问题中提到了Redis),二进制安全批量字符串的语法为“$str_len\r\nbinary_safe_string\r\n”。这里,字符串的长度是字符串表示的一部分。有了这个,您可以将任何东西保存为字符串,比如JPEG图像。 请参阅Redis文档获取更多详细信息。
因此,“二进制安全性”是相对于以字符'\0'结尾的C语言字符串而言的。Redis字符串是二进制安全的,这意味着Redis字符串可以包含任何类型的数据,例如JPEG图像或序列化的Ruby对象。