关于redis字符串设计的问题
来源:4-12 .2 C语言字符串问题
易萧
2022-08-11
其实redis也没有解决C++ string未解决的\0标识问题,对于终端传来的字符串以及内部使用本就有自己的处理和规范,但如果给它一个标准带\0的C串,它仍然无法解决这个问题。
C++ string没有解决这个问题就在于它的构造函数参数就是一个const char *传统c串,根本无法从这个参数获知\0后到底是否还有内容,除非提供手动设置串长,否则没有任何办法可以解决这个问题。
写回答
1回答
-
quickzhao
2022-08-11
不是的, Redis提供了解决此问题的方案。从兼容性C语言字符串的角度来看这个问题是无法解决的,但是你读读Redis源码,Redis的SDS是根据len的值来判断字符的长度的,而不是'\0'结尾,所以对二进制数据的存储是安全的。
242024-07-10
相似问题