什么是二进制安全字符串?

17

什么是二进制安全字符串?它只是在字符串本身中附加长度的字符串吗?为什么它们被称为二进制安全?不确定是否应该标记redis,但在阅读redis文档时看到了这个术语。


1
这意味着你可以使用图像内容作为密钥,不局限于字母和数字。 - Mark Setchell
4个回答

16

二进制安全字符串是指可以包含任何字符(字节)的字符串。

例如,许多编程语言使用0x00字符作为字符串结尾标记,因此从这个意义上说,二进制安全字符串可以由这些字符组成。


7
Redis字符串是一系列字节的序列。在Redis中,字符串是二进制安全的,意味着它们具有已知长度,不受任何特殊终止字符的限制。因此,您可以在一个字符串中存储最多512兆字节的任何内容。
参考链接:https://www.tutorialspoint.com/redis/redis_data_types.htm

2

二进制安全字符串不对其长度或终止字符做任何假设。例如,在Redis中(因为您在问题中提到了Redis),二进制安全批量字符串的语法为“$str_len\r\nbinary_safe_string\r\n”。这里,字符串的长度是字符串表示的一部分。有了这个,您可以将任何东西保存为字符串,比如JPEG图像。 请参阅Redis文档获取更多详细信息。


2
“二进制安全字符串”的定义在Redis的文档中如下:

Redis字符串是二进制安全的,这意味着Redis字符串可以包含任何类型的数据,例如JPEG图像或序列化的Ruby对象。

因此,“二进制安全性”是相对于以字符'\0'结尾的C语言字符串而言的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接