redis 6源码解析之 sds

redis使用sds(simple dynamic string)实现了字符串的存储。sds实际上就是TLV格式的数据结构。其数据结构主要分为如下5种,主要分为首部和数据部分,首部给出了type和len信息,数据部分用于存储字符串数据。不同的首部可以表示不同长度的字符串数据,如SDS_TYPE_8最大可以表示(28 -1)大小的字符串数据。划分为不同类型的sds首部是为了减少内存浪费。

sds实现了字符串存储的扩展(基于realloc命令)和收缩(使用malloc重新申请复制数据)以及字符串的一般操作,如大小写转换,截取,拼接等。在使用sds时要注意内存变动可能导致的性能问题。

源代码解析参见sds.csds.h

posted @ 2020-04-16 23:12  charlieroro  阅读(645)  评论(0编辑  收藏  举报