redis sds 介绍( 二 )

  • flags记录了当前字节数组的属性、用来标识到底是sdshdr8还是sdshdr16等
  • buf保存了字符串真正的值以及末尾的一个
  • 整个sds的内存是连续的,统一开辟的 。在大多数操作中,buf内的字符串实体才是操作对象 。统一开辟内存能通过buf头指针进行寻址,拿到整个struct的指针,而且通过buf的头指针减1直接就能获取flags的值, flags = s[-1] 。
    更详细的sds的分配可参见sds.c中sdsnewlen的实现部分 。

    【redis sds 介绍】


    推荐阅读