Redis string

Redis string

redis的字符串号称是二进制安全的,其内部实现其实就是个head+ char*。 
typedef  char *sds;

struct sdshdr {
     int len; //  len 表示buf字符数组实际使用的空间大小, 
      int free; // free表示buf剩余空间大小 
      char buf[]; // buf所分配的空间大小等于len+free 
 };

static inline size_t sdslen( const sds s) {
     struct sdshdr *sh = ( void*)(s-( sizeof( struct sdshdr)));
     return sh->len;
}

static inline size_t sdsavail( const sds s) {
     struct sdshdr *sh = ( void*)(s-( sizeof( struct sdshdr)));
     return sh->free;
}

sds sdsnewlen( const  void *init, size_t initlen);
sds sdsnew( const  char *init);
sds sdsempty();
size_t sdslen( const sds s);
sds sdsdup( const sds s);
void sdsfree(sds s);
size_t sdsavail(sds s);
sds sdsgrowzero(sds s, size_t len);
sds sdscatlen(sds s,  void *t, size_t len);
sds sdscat(sds s,  char *t);
sds sdscatsds(sds s, sds t);
sds sdscpylen(sds s,  char *t, size_t len);
sds sdscpy(sds s,  char *t);

sds sdscatvprintf(sds s,  const  char *fmt, va_list ap);
sds sdscatprintf(sds s,  const  char *fmt,  );

sds sdstrim(sds s,  const  char *cset);
sds sdsrange(sds s,  int start,  int end);
void sdsupdatelen(sds s);
void sdsclear(sds s);
int sdscmp(sds s1, sds s2);
sds *sdssplitlen( char *s,  int len,  char *sep,  int seplen,  int *count);
void sdsfreesplitres(sds *tokens,  int count);
void sdstolower(sds s);
void sdstoupper(sds s);
sds sdsfromlonglong( long  long value);
sds sdscatrepr(sds s,  char *p, size_t len);
sds *sdssplitargs( char *line,  int *argc);

你可能感兴趣的:(Redis string)