采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在拼接字符串时,redis中的free可以记录剩余空间大小如果不够会自动扩容,那么如果就像之前那个缓冲区溢出的例子一样,字符串总的剩余的空间不足,但是后面又紧接着跟了一个别的字符串,那么此时如何扩容呢?
具体细节可能稍有点复杂,可以参看《Redis设计与实现》或参看Redis源码。大致思路是free和len的长度以一比一方式增加,如果字符串长度小于1M会以字符串长度*2方式增加;大于1M则会增加2M.
那扩充完不会覆盖后面紧跟着的字符串么?还是说,如果空间不够,后面又紧跟着别的字符串,扩充的时候汇报错?
这种事不会在redis中发生,你说的模型是c语言中的stack模型。redis一开始分配空间时就避免的这种事发生,请关注第五章后续内容。
这里C方式其实有两个问题:1.没有判断长度是否够用;2.没有扩容机制;而这两点Redis都有处理,至于你担心的容量不够问题,我们完全可以在另一块容量够的区域做此事,前提是需要有判断和扩容机制。
登录后可查看更多问答,登录/注册
一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维
1.2k 12
1.3k 10
1.2k 9
1.0k 9