尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Redis底层数据结构:SDS简单动态字符串(彻底详解)

Redis底层数据结构:SDS简单动态字符串(彻底详解) 一、SDS是什么SDSSimple Dynamic String是Redis自定义的动态字符串结构完全替代C语言原生字符串是Redis String类型的底层实现。二、SDS结构源码struct sdshdr { // 已使用长度 unsigned int len; // 空闲长度 unsigned int free; // 字符数组 char buf[]; };三、SDS对比C字符串四大优势1. O(1)时间获取字符串长度C字符串需要遍历计算长度SDS直接读取len字段极致高效。2. 杜绝缓冲区溢出SDS修改字符串前校验free空闲空间自动扩容不会溢出。3. 减少内存分配次数预分配/惰性释放扩容预分配空闲空间缩容不立即回收内存大幅减少系统调用。4. 二进制安全C字符串以\0结尾无法存储图片、二进制数据SDS以len判定长度完全二进制安全。四、SDS扩容缩容规则长度1M扩容双倍长度1M扩容1M缩容空闲空间过多时自动回收
返回列表