SDS空间分配策略

本文介绍了SDS(Simple Dynamic Strings)中使用的空间预分配策略:对于小于1M的空间,分配为原有长度加相同长度再加1字节;对于大于1M的空间,则分配原有长度加1MB再加1字节。此外还介绍了惰性空间释放机制,通过保留已释放空间而不是立即回收,以提高后续扩展效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.SDS空间预分配策略

对于空间小于1M来说,分配空间为原有总长度+同样长度+1byte(B,字节).

比如原长度为8的字符串,新增5个长度后,总共为13长度,则预分配13+13+1=27字节(额外一字节用于保存空字符串)

对于大于1M来说,分配空间为原有总长度+1MB+1byte

比如增加完字符串后长度为15MB,则为15MB+1MB+1byte

2.惰性空间释放

对于需要缩短字符串的情景,即需要释放空间,SDS将需要移除的字符串移除,但是多余出来的的空间不释放,而是保留下来,记录在free里,这样扩展就有多余空间来进行,当然有真正释放空间的方法.

比如"XYXYabcXY\0" 移除所有的X和Y

则len变为3 free变为6

转载于:https://my.oschina.net/u/2462104/blog/1456841

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值