Redis中sds 模块的 API
Redis的字符串表示为sds
sds会为追加操作进行优化:加快追加操作的速度,并降低内存分配的次数,代价是多占用了一些内存,而且这些内存不会住主动释放。
函数 | 作用 | 算法复杂度 |
---|---|---|
sdsnewlen |
创建一个指定长度的 sds ,接受一个 C 字符串作为初始化值 |
[Math Processing Error]O(N) |
sdsempty |
创建一个只包含空白字符串 "" 的 sds |
[Math Processing Error]O(1) |
sdsnew |
根据给定 C 字符串,创建一个相应的 sds |
[Math Processing Error]O(N) |
sdsdup |
复制给定 sds |
[Math Processing Error]O(N) |
sdsfree |
释放给定 sds |
[Math Processing Error]O(N) |
sdsupdatelen |
更新给定 sds 所对应 sdshdr 结构的 free 和 len |
[Math Processing Error]O(N) |
sdsclear |
清除给定 sds 的内容,将它初始化为 "" |
[Math Processing Error]O(1) |
sdsMakeRoomFor |
对 sds 所对应 sdshdr 结构的 buf 进行扩展 |
[Math Processing Error]O(N) |
sdsRemoveFreeSpace |
在不改动 buf 的情况下,将 buf 内多余的空间释放出去 |
[Math Processing Error]O(N) |
sdsAllocSize |
计算给定 sds 的 buf 所占用的内存总数 |
[Math Processing Error]O(1) |
sdsIncrLen |
对 sds 的 buf 的右端进行扩展(expand)或修剪(trim) |
[Math Processing Error]O(1) |
sdsgrowzero |
将给定 sds 的 buf 扩展至指定长度,无内容的部分用 \0 来填充 |
[Math Processing Error]O(N) |
sdscatlen |
按给定长度对 sds 进行扩展,并将一个 C 字符串追加到 sds 的末尾 |
[Math Processing Error]O(N) |
sdscat |
将一个 C 字符串追加到 sds 末尾 |
[Math Processing Error]O(N) |
sdscatsds |
将一个 sds 追加到另一个 sds 末尾 |
[Math Processing Error]O(N) |
sdscpylen |
将一个 C 字符串的部分内容复制到另一个 sds 中,需要时对 sds 进行扩展 |
[Math Processing Error]O(N) |
sdscpy |
将一个 C 字符串复制到 sds |
[Math Processing Error]O(N) |