Redis

redis sds

December 13, 2021
Redis
Sds

简单动态字符串 # 结构: len alloc flag buf 长度(已使用空间大小) 分配(总共空间大小:buf 的大小减 1 – ‘\0’字符占用了 1) 标记(sdshdr 的类型) 真正存储字符串的地方 文件: sds.h, sdsalloc.h, sds.c. 定义: typedef char *sds; 根据类型获取长度: static inline size_t sdslen(const sds s) { unsigned char flags = s[-1]; switch(flags&SDS_TYPE_MASK) { case SDS_TYPE_5: return SDS_TYPE_5_LEN(flags); case SDS_TYPE_8: return SDS_HDR(8,s)->len; case SDS_TYPE_16: return SDS_HDR(16,s)->len; case SDS_TYPE_32: return SDS_HDR(32,s)->len; case SDS_TYPE_64: return SDS_HDR(64,s)->len; } return 0; } 新建: /* Create a new sds string with the content specified by the 'init' pointer * and 'initlen'. ...