请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于redis字符串设计的问题

其实redis也没有解决C++ string未解决的\0标识问题,对于终端传来的字符串以及内部使用本就有自己的处理和规范,但如果给它一个标准带\0的C串,它仍然无法解决这个问题。
C++ string没有解决这个问题就在于它的构造函数参数就是一个const char *传统c串,根本无法从这个参数获知\0后到底是否还有内容,除非提供手动设置串长,否则没有任何办法可以解决这个问题。

正在回答 回答被采纳积分+3

1回答

quickzhao 2022-08-11 20:50:58

不是的, Redis提供了解决此问题的方案。从兼容性C语言字符串的角度来看这个问题是无法解决的,但是你读读Redis源码,Redis的SDS是根据len的值来判断字符的长度的,而不是'\0'结尾,所以对二进制数据的存储是安全的

2 回复 有任何疑惑可以回复我~
  • 有些疑问,Redis的SDS是根据len的值来判断字符的长度的,那len的值是怎么得到的呢?
    回复 有任何疑惑可以回复我~ 2023-06-11 07:31:19
  • 储存或修改字符信息时会同步更新len的值。
    回复 有任何疑惑可以回复我~ 2023-06-11 16:20:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信