Redis 第一讲 STRING 类型

REDIS string 构建了SDS这种抽象类型(二进制安全)
sds.h/sdshdr基本结构
struct sdshdr {
int len; //记录已经使用的长度 (实际上C语言中\0为结束字符的长度1不计算在内)
int free; //未分配空间长度
char buff[]; //字节数组
}
相当于升级C语言结构体
1.减少了空间的分配:
增加字符串分配法则:诺我们新增加字符串长度为N,且当N大约free长度时会触发
1.1在len小于1MB的时候,重新分配内存,free会跟len(原len+N)一样的长度,系统会申请2*长度+1的空间。
1.2在len已经大于30MB的时候,那么free每次会重新申请len(原len+N)+1MB的空间。
减少字符串释放法则:惰性释放,只是把剩下的存储到free里面。(其实可以试用)
2.减少了查询字符串长度的复杂度:当求一个字符串长度的时候,复杂度由O(N)变为O(1)
3.减少缓冲区溢出
记录了FREE的长度,字符串N的长度过长,会重新分配好空间,然后进行数据存储

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2
Jourdon

建议好好排版一下,不然会感觉比较乱。

7年前 评论
chenBJ

要是增加一些示例代码演示就更加nice了

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!