请稍等 ...
×

采纳答案成功!

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

关于redis中free的问题

在拼接字符串时,redis中的free可以记录剩余空间大小如果不够会自动扩容,那么如果就像之前那个缓冲区溢出的例子一样,字符串总的剩余的空间不足,但是后面又紧接着跟了一个别的字符串,那么此时如何扩容呢?

正在回答

1回答

具体细节可能稍有点复杂,可以参看《Redis设计与实现》或参看Redis源码。大致思路是free和len的长度以一比一方式增加,如果字符串长度小于1M会以字符串长度*2方式增加;大于1M则会增加2M.

1 回复 有任何疑惑可以回复我~
  • 提问者 慕运维5089448 #1
    那扩充完不会覆盖后面紧跟着的字符串么?还是说,如果空间不够,后面又紧跟着别的字符串,扩充的时候汇报错?
    回复 有任何疑惑可以回复我~ 2020-02-27 01:01:32
  • quickzhao 回复 提问者 慕运维5089448 #2
    这种事不会在redis中发生,你说的模型是c语言中的stack模型。redis一开始分配空间时就避免的这种事发生,请关注第五章后续内容。
    回复 有任何疑惑可以回复我~ 2020-02-27 01:05:40
  • quickzhao 回复 提问者 慕运维5089448 #3
    这里C方式其实有两个问题:1.没有判断长度是否够用;2.没有扩容机制;而这两点Redis都有处理,至于你担心的容量不够问题,我们完全可以在另一块容量够的区域做此事,前提是需要有判断和扩容机制。
    回复 有任何疑惑可以回复我~ 2020-02-27 08:50:34

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信